哪些字符串可以作为Ruby的方法名称?我特别想知道非单词字符在什么方面可以成为方法名称的一部分。请提供一套详尽的规则/清单。
修改
Phrogz对Josh Lee链接问题的回答有一个链接到下一页,但这是几年前的,并且已经过时了。例如,Proc#()
缺失。有谁知道更新过的?
答案 0 :(得分:3)
根据pickaxe(编程Ruby ,实用程序员):
局部变量,方法参数和方法名称都应该是 以小写字母或下划线开头...在此初始字符后面,名称可以是字母,数字和下划线的任意组合(条件是@符号后面的字符可能不是数字)...方法名称可能以字符?,!和=。
结尾
答案 1 :(得分:2)
任何Unicode字符序列都是有效的方法名称。例如:
class Test
define_method :' ??? _ µµµµ . . . ' do puts 'Hello' end
end
Test.instance_methods
# => [:' ??? _ µµµµ . . . ']
Test.new.send :' ??? _ µµµµ . . . '
# Hello
答案 2 :(得分:1)
您可以使用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字符。
此外,在Stack Overflow上,这已经在“How does Ruby 1.9 handle character cases in source code?”中得到了很好的讨论。由于这个问题的年龄,我并没有将其标记为重复,但它确实值得引用。
应该问的问题是,是否应该在方法名称中使用非ASCII字符?是的,它们很可爱,它们可能具有象征意义,但它们可能很难打字,尤其是那些因某种原因无法输入角色的人。如果它们位于gem中,则创建包含π或λ的方法名称或常量可能很难输入。
另请注意,在几个链接页面上提到的$KCODE
现在已在Ruby 1.9.1+中弃用,因此您需要使用魔术线。