首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将成员变量赋给Ruby中的代码块的结果

将成员变量赋给Ruby中的代码块的结果
EN

Stack Overflow用户
提问于 2012-10-30 10:55:49
回答 3查看 70关注 0票数 2

我想将一个成员变量赋给返回2x2数组的冗长代码块的结果。这将在构造函数中完成。但如果我在构造函数中这样做,

代码语言:javascript
运行
复制
def initialize
@foo = ...
       ...
end

然后,只将该块中的第一行代码分配给@foo。如果我定义了一个方法,那么我会在编译过程中得到一个未知的方法错误,这是有意义的,因为它不知道在哪个实例上调用它。我不认为我能做'self',因为它在构造器中,所以还没有实例。

我不希望代码块出现在类定义中,我希望将其整洁地封装在某个地方。类方法需要使其他变量可用于该方法,这些变量应该只属于每个实例。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-30 11:04:14

您可以使用dpassage的解决方案,但我认为解决此问题的更常见的方法是使用helper函数。

代码语言:javascript
运行
复制
class Bar
  def initialize
    @foo = helper
  end

  def helper
    #do stuff
  end
end
票数 1
EN

Stack Overflow用户

发布于 2012-10-30 11:00:02

如果我理解你想做什么,你应该可以这样做:

代码语言:javascript
运行
复制
def initialize
  @foo = begin
    ...
  end
end

@foo的值应该是begin...end块中最后一行代码的结果。

票数 0
EN

Stack Overflow用户

发布于 2012-10-30 12:22:53

如果在实际定义数组之前有冗长的“准备”代码,只需将数组赋值放在冗长的部分之后:

代码语言:javascript
运行
复制
def initialize
    # some lengthy code
    # ...
    @foo = something_using_the_result_from_the_lengthy_code
end

或者,如果冗长的代码在数组的赋值中,那么您应该不会有任何问题:

代码语言:javascript
运行
复制
def initialize
  @foo = [
    # lengthy code to assign the array
  ]
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13132010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档