2011-02-02 8 views

答えて

1

これについてドキュメントをチェックアウトすることができます。 http://www.ruby-doc.org/core/classes/Object.html#M001005

はい、シンボルが必要です。これは、目で見た方が簡単に電話することもできます。 Rubyで

send(method_name) if respond_to?(some_method.to_sym, true) 
+3

実際には、シンボルは必要ありません(1.8.6、1.8.7、1.9.1、および1.9.2でテスト済み): '[] .send( 'length')#=> 0' – Phrogz

3

シンボルは、任意の文字列値を含むことができるが、xxxが有効な識別子でなければ、リテラル:xxx表記を使用して表すことができません。 「:有効な識別子でないか、シンボルを作成するために、文字列の補間を使用したい場合、あなたは表記:"yyy"とRubyもそのように報告し、それらを指定する記号について:

irb(main):001:0> "foo".to_sym 
=> :foo 
irb(main):002:0> :foo 
=> :foo 
irb(main):003:0> "foo-bar".to_sym 
=> :"foo-bar" 
irb(main):004:0> :"foo-bar" 
=> :"foo-bar" 

あなたは上記の持っている何か、 #{some_method} "は、some_method.to_s.to_symと同じです。

しかし、他の投稿への私のコメントで指摘したように、必要ならば、シンボルの代わりに文字列を直接sendに渡すことができます。

関連する問題