0

ruby で引数付きのメソッドを渡す方法に興味があります。柔軟な機能設定でコマンドパターンのようなものを実装する必要があります。例 => C# のラムダ関数。

4

3 に答える 3

2

Rubylambda関数は次のように定義されています。

  a.lambda{ puts "Hello"}
  a.call #=> Hello

  a = lambda{|str| puts str }
  a.call("Hello world !!!") #=> Hello world !!!

  a = lambda{|*args| puts args.join(' ')}
  a.call("Hello", "World") #=> Hello World
于 2013-02-27T18:06:28.687 に答える
1

Ruby でほとんどのことを行うのと同じように、コマンド パターンを実行できます: ブロックを使用します。

class Soldier

  def initialize(&block)
    @command = block
  end
  def action
    @command.call if @command
  end

end

s = Soldier.new do #the block
  line = "We are drill machines, drill machines feel no pain"
  2.times{ puts line }
  puts line.upcase
end

puts "Action:"
s.action
于 2013-02-27T19:18:38.657 に答える
0

引数リストとともにメソッドを動的に呼び出すことができます。以下はその方法の1つにすぎません

class Foo
  def foo(what)
    puts what
  end
end

Foo.new.send(:what, "something")  # ==> "something"
于 2013-02-27T18:06:37.670 に答える