0

私はこのようなルビーコードを持っています:

my_hash = {
  key1: "value", 
  key2: "value"
}

def key1
  do_something
end

def key2
  do_something_else
end

ご覧のとおり、キーとメソッドの名前は同じです。ここで、ハッシュキーをメソッド呼び出しに「変換」したいと思います。メソッド名はハッシュキーです。

背景として、ハッシュ値がラベルであり、キーのみを渡すncursesメニューがあります。そして、メニューエントリが選択されたときに、どのエントリが選択されたかをifまたはcaseステートメントで把握するなど、コーディングのオーバーヘッドをあまりかけずに正しいメソッドを実行したいと思います。

これはどうにか可能ですか?はいの場合、どうすればそれを行うことができますか?

これを説明するのは少し難しいので、私が言っていることを理解していただければ幸いです。

4

1 に答える 1

1

sendシンボルの名前でメソッドを呼び出すために使用します。

my_hash.each { |k,_| send k }

これにより、ハッシュ内のすべてのメソッドが呼び出されます。send繰り返しの代わりに、1つだけを選び、それを使用して呼び出すことができます。

于 2012-06-12T15:25:16.930 に答える