我试图从数组(@controller)为每个实体编写单行块,这个单块的目的是从控制器数组中得到[n]元素,n是一个存取器,现在我想到了类似的东西:
def for_controller
controller = @controllers.first[n]
yield controller
end
我写的单块不幸没有用,但下面的多行块在循环中完美运行。
def for_all_controllers
@controllers.each do |controller|
yield controller
end
end
使问题更清晰:
@controllers[0] should yield => something_1
@controllers[1] should yield => something_2
@controllers[n] should yield => something_(n+1)
我怎样才能让它发挥作用?
答案 0 :(得分:0)
这是你在找什么?
def for_controller
yield @controllers[n]
end
答案 1 :(得分:0)
您的示例代码看起来错了。
@controllers.first[n]
这将从数组中获取@controller.first
返回的第n个元素。
但在你的问题中,你说:
从控制器数组中产生[n]元素
我认为您期望数据结构(a),而不是(b)。
(a)
@controllers = [
'something', # <= @controller.first returns this element, as you expected
'something',
'something'
]
(b)
@controller = [
['something', 'something', 'something'],
['something', 'something', 'something'],
['something', 'something', 'something']
]
我认为你应该尝试以下:
@controllers.first(n)
它从@controller返回第一个第n个元素。这是你期望的结果吗,对吗?