Rubyのメソッド名にできる文字列は何ですか? 特に、単語以外の文字がメソッド名の一部になる方法を知りたいです。ルール/リストの完全なセットを提供してください。
Josh Lee がリンクしている質問に対する Phrogz の回答を編集すると、次のページへのリンクがありますが、それは数年前のものであり、時代遅れです。たとえば、Proc#()
欠落しています。更新されたものを知っている人はいますか?
つるはし (プログラミング Ruby、実用的なプログラマー) によると:
ローカル変数、メソッド パラメーター、およびメソッド名はすべて小文字またはアンダースコアで開始する必要があります...この最初の文字に続いて、名前は文字、数字、およびアンダースコアの任意の組み合わせにすることができます記号は数字であってはなりません)... メソッド名は文字 ?、!、および = で終わる場合があります。
Unicode 文字の任意のシーケンスが有効なメソッド名です。例えば:
class Test
define_method :' ??? _ µµµµ . . . ' do puts 'Hello' end
end
Test.instance_methods
# => [:' ??? _ µµµµ . . . ']
Test.new.send :' ??? _ µµµµ . . . '
# Hello
メソッドの名前として、ASCII、UTF-8、および Unicode 文字を使用できます。\s
パーサーが文句を言うという理由だけで、空白 ( ) 文字は機能しないと思います。マジック ラインを設定するだけで、Ruby が何を期待できるかがわかります。
http://www.oreillynet.com/ruby/blog/2007/10/fun_with_unicode_1.htmlおよびhttp://rosettacode.org/wiki/Unicode_variable_names#Rubyおよびhttp://www.sw.it.aoyama.ac. jp/2009/pub/IUC33-ruby1.9/ . Phrogz のhttps://stackoverflow.com/a/4379197/128421には、ASCII 文字をカバーする優れた正規表現があります。
また、こちらのスタック オーバーフローでは、「Ruby 1.9 はソース コード内の文字のケースをどのように処理しますか?」でうまく説明されています。その質問の年齢のために、私はこれを重複としてマークしていませんが、参照する価値があります.
ただし、尋ねるべき質問は、メソッド名に非 ASCII 文字を使用する必要があるかどうかです。はい、かわいいし、象徴的かもしれませんが、特に何らかの理由で文字を入力する能力がない人にとっては、入力するのが苦痛になる可能性があります. π または λ を含むメソッド名または定数を作成すると、それらが gem にある場合、入力するのが難しい場合があります。
また$KCODE
、リンクされたページのいくつかで言及されている は、Ruby 1.9.1 以降では非推奨になっているため、マジック ラインを使用する必要があることに注意してください。