25

再利用する変数に「コードブロック」を格納したいのですが、次のようになります。

block = do
|test| puts test
end

3.upto(8) block

誰かが私が何をしているのかを明らかに間違っていることを教えてもらえますか?(またはそれが不可能な場合)

4

1 に答える 1

37

Ruby でこれを行う方法はたくさんありますが、その 1 つが Proc を使用する方法です。

foo = Proc.new do |test|
  puts test
end

3.upto(8) { foo.call("hello world") }

Procs の詳細については、次を参照してください。

更新、上記のメソッドは次のように書き換えることができます。

# using lower-case **proc** syntax, all on one line
foo = proc { |test| puts test }
3.upto(8) { foo.call("hello world") }

# using lambda, just switch the method name from proc to lambda
bar = lambda { |test| puts test }
3.upto(8) { bar.call("hello world") } 

これらは基本的に非常によく似た方法ですが、微妙な違いがあります。

そして最後に、私が概説したことを実行するためのよりエレガントな方法がおそらくあるでしょう。お役に立てれば。

于 2012-10-07T00:27:49.997 に答える