我想将一个成员变量赋给返回2x2数组的冗长代码块的结果。这将在构造函数中完成。但如果我在构造函数中这样做,
def initialize
@foo = ...
...
end
然后,只将该块中的第一行代码分配给@foo。如果我定义了一个方法,那么我会在编译过程中得到一个未知的方法错误,这是有意义的,因为它不知道在哪个实例上调用它。我不认为我能做'self',因为它在构造器中,所以还没有实例。
我不希望代码块出现在类定义中,我希望将其整洁地封装在某个地方。类方法需要使其他变量可用于该方法,这些变量应该只属于每个实例。
发布于 2012-10-30 11:04:14
您可以使用dpassage的解决方案,但我认为解决此问题的更常见的方法是使用helper函数。
class Bar
def initialize
@foo = helper
end
def helper
#do stuff
end
end
发布于 2012-10-30 11:00:02
如果我理解你想做什么,你应该可以这样做:
def initialize
@foo = begin
...
end
end
@foo
的值应该是begin...end
块中最后一行代码的结果。
发布于 2012-10-30 12:22:53
如果在实际定义数组之前有冗长的“准备”代码,只需将数组赋值放在冗长的部分之后:
def initialize
# some lengthy code
# ...
@foo = something_using_the_result_from_the_lengthy_code
end
或者,如果冗长的代码在数组的赋值中,那么您应该不会有任何问题:
def initialize
@foo = [
# lengthy code to assign the array
]
end
https://stackoverflow.com/questions/13132010
复制相似问题