2017-08-23 4 views
0
  1. 対文字列、例えば、foo.public_send('bar')foo.public_send(:bar)を文字列を送信し、動的にメソッドを呼び出すために、シンボルを送信するの違いは何ですか?これらの処理方法には具体的な違いがありますか?動的ディスパッチング:シンボル

  2. 記号がより良い場合は、何らかの理由で文字列としてメソッド名を作成する必要がある場合は、foo.public_send('bar'.to_sym)を実行する価値がありますか? 文字列を渡すときに、それらの間の違いはありません

答えて

3
  1. は、実際には、それがシンボルに変換されます。

  2. 文字列が指定されている場合は、同じ変換(例:'bar'.to_sym)が行われるため、変換する必要はありません。 docsから

はそれを任意の引数 指定を渡し、シンボルで識別されるメソッドを呼び出します。送信とは異なり、#public_sendはパブリックメソッドのみを呼び出します。 メソッドが文字列で識別される場合、文字列は シンボルに変換されます。

+0

ありがとう!私は盲目だと思う、私はドキュメントでこれを探したときに最後の文を逃した:) – tjukes

関連する問題