bsj*_*bsj 2 ruby transpose attr-accessor
我有一个简单的类,并且正在转置一个二维数组,如下所示:
class Group
attr_accessor :group_array
def initialize
@group_array = []
end
...
def shuffle_groups!
new_groups = group_array.transpose
group_array = new_groups
end
end
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试在一行中设置新的组数组时,如下所示:
def shuffle_groups!
group_array = group_array.transpose
end
Run Code Online (Sandbox Code Playgroud)
我得到:
undefined method `transpose' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)
为什么这不起作用?
向解释器明确您正在调用访问器方法,而不是创建局部变量。
class Group
attr_accessor :group_array
def initialize
@group_array = [%w(1 2 3), %w(4 5 6)]
end
def shuffle_groups!
new_groups = self.group_array.transpose
self.group_array = new_groups
end
def shuffle_groups_2!
self.group_array = self.group_array.transpose
end
end
g = Group.new
p g.group_array
# [["1", "2", "3"], ["4", "5", "6"]]
g.shuffle_groups!
p g.group_array
# [["1", "4"], ["2", "5"], ["3", "6"]]
g.shuffle_groups_2!
p g.group_array
# [["1", "2", "3"], ["4", "5", "6"]]
Run Code Online (Sandbox Code Playgroud)
这两种方法都效果很好。
| 归档时间: |
|
| 查看次数: |
2009 次 |
| 最近记录: |