缘由:我定义了一个类(彩票Cp),其中定义了类变量(@@cps)用于记录所有被实例化的对象,并通过类方法(self.get_cps)提供外部接口。
问题是,我要测试我的彩票程序在最近50期的实际情况与模拟产生的数据进行比较,但我只想一次把所有的历史数据都实例化,然后再修改Cp类的get_cps类方法。我的做法是这样的
类定义:
Class Cp
@@cps = []
class << self
def get_cps
@@cps
end
...
end
def initialize
@@cps << self
end
...
end
测试程序:
...... #产生彩票的所有历史实例
$cps = Cp.get_cps
(1..50).each do |t|
$n = t
Cp.class_eval <<-END
def self.get_cps
$cps[$n..-1] #通过两个全局变量传到方法内部
end
END
...
end
目的是达到了, 但通过全局变量的方式心里总是不怎么舒服,究竟怎么做才更显得Ruby呢?请大家讨论一下。
如果是通过逐步增加彩票实例的方法就不说了,我还要进行多线程同时模拟呢。
另外找到一个更好的方法:
...... #产生彩票的所有历史实例
(1..50).each do |t|
Cp.class_eval <<-END
def self.get_cps
@@cps[#{t}..-1]
end
END
...
end
这种方法在本场景下是有效的。也就是说,如果传入的只是数字、字符串等简单对象,可以直接以#{}的方式先计算出字符串的方式改变定义。但如果确实需要复杂对象(比如我确实需要本地得到的cps)的传入,是否有办法呢?
分享到:
- 2009-08-04 11:54
- 浏览 907
- 评论(4)
- 论坛回复 / 浏览 (4 / 2631)
- 查看更多
相关推荐
宏定义、结构体定义、函数声明以及全局变量定义放到一个head.h头文件中 函数的定义放到head.cpp中 main函数放到main.cpp中 然而却报错了,提示xxx变量在*.obj文件中已定义 问题出现的原因 为什么会出现这种...
这里将介绍两种在MFC工程中定义全局变量和全局函数的方法。 方法一:在应用程序类中定义 在MFC中,每个工程都有一个派生自CWinApp的类,例如CxxxApp。你可以将需要全局访问的变量和函数作为此类的成员变量和成员...
VC中如何定义全局变量VC中如何定义全局变量VC中如何定义全局变量VC中如何定义全局变量VC中如何定义全局变量VC中如何定义全局变量VC中如何定义全局变量VC中如何定义全局变量VC中如何定义全局变量VC中如何定义全局变量...
经过3天的努力,我实现了一种方法,把程序的堆空间完全指定到外部SDRAM,这样在程序中任意定义的全局和静态变量不用指定地址,在编译程序时,编译器自动把这些变量分配到外部SDRAM中。此方法适用于IAR环境,
例如,如果有一个图像资源`资源变量定义方法.jpg`,我们可以在`Unit1.pas`中创建一个TImage组件,并在它的`Picture`属性中加载这个资源: ```delphi uses Classes, Graphics; var ImageResource: ...
- 在Java中,类定义通常包括类名、属性(成员变量)以及方法(成员函数)。 - **示例**: ```java public class Document { private String name; public Document(String name) { this.name = name; } ...
在上述代码中,我们定义了一个名为`ChangeValue`的类,该类包含一个私有字符串变量`myValue`和两个公共方法:构造函数和`WriteLine`方法。`Test`类中的`Main`方法则演示了如何使用反射来修改`ChangeValue`类实例中的...
程序定义变量的命名方法是软件开发和程序设计中非常重要的一方面。不同的命名方法可以影响程序的可读性、维护性和易用性。本文将介绍三种常见的程序定义变量的命名方法:匈牙利命名法、骆 驼命名法和帕斯卡命名法。 ...
成员对象可以直接访问所属类的所有公有(public)和保护(protected)成员,包括方法和变量。 当我们有两个类A和B,且它们需要互相调用对方的成员时,通常会遇到两个主要问题:前置声明(Forward Declaration)和...
全局变量`a`可以在整个程序的任何地方访问,包括类的方法中。在类`date`中定义了一个成员函数`printfl()`,该函数用于打印数组`a`的所有元素。 ```cpp const int a[13] = {1,2,3,4,5,6,7,8,9,10,11,12,13}; ``` ...
方法中的变量有不同作用域:成员变量在整个类内有效,局部变量只在其定义的方法或块内有效,方法参数在其所属的方法或构造器内有效,而异常处理参数则局限于特定的异常处理代码。 构造方法是与类同名的方法,用于...
本文将详细介绍几种在Python中检测变量是否已定义的方法,并通过实例来展示这些方法的具体应用。 #### 方法一:使用`locals()`函数 `locals()`函数返回当前作用域内的所有局部变量的字典。可以通过检查这个字典...
1. 在一个头文件(例如`temp.h`)中定义一个类,并在类中声明静态成员变量: ```cpp #ifndef TEMP_H #define TEMP_H class Temp { private: static int x; }; #endif // TEMP_H ``` 2. 在对应的cpp文件(例如`...
MFC项目的复杂性使得简单的全局变量定义变得不再适用,因为这可能会导致难以调试的问题。本文将详细介绍如何在MFC中正确地定义和使用全局变量与全局函数,从而有效地管理项目中的数据流和功能复用。 #### 定义全局...
成员变量可以在类的任何方法中访问,也可以在类的外部通过对象进行访问。 2. 局部变量(Local Variables): 局部变量是在方法、构造器或者块中声明的,它们的作用域仅限于声明它们的代码块。一旦代码块执行完毕,...
### Java中局部内部类可以访问它所在方法中定义的final修饰的局部变量的合理解释 #### 背景介绍 在Java编程语言中,局部内部类(Local Inner Class)是一种特殊的内部类形式,它被定义在某个方法或构造器的内部。...
在C#编程语言中,变量的访问修饰符和类型对代码的组织和...在实践中,你可能会遇到更多复杂的场景,如属性(Properties)的使用,以及如何通过getter和setter方法来控制变量的访问,这些都是在C#中管理变量的重要补充。