0

配列(@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)

どうすればこれを機能させることができますか?

4

2 に答える 2

0

それはあなたが探しているものですか?

def for_controller
 yield @controllers[n]
end
于 2013-05-23T08:53:47.583 に答える
0

サンプル コードが間違っているようです。

@controllers.first[n]

これは、 によって返される配列から n 番目の要素を取得します@controller.first

しかし、あなたの質問では、次のように述べました。

コントローラー配列から [n] 要素を生成します

(b) ではなく、(a) のデータ構造を期待していると思います。

(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 番目の要素を返します。予想通りの結果ですよね?

于 2013-05-23T09:17:08.827 に答える