哪些字符串可以作为 Ruby 的方法名称?我特别想知道非单词字符以何种方式可以成为方法名称的一部分。请给出一套详尽的规则/列表。
编辑
Phrogz 对 Josh Lee 链接的问题的回答有一个指向下一页的链接,但那是几年前的,并且已经过时了。例如,Proc#()
缺少。有人知道更新的吗?
根据镐(Programming Ruby,The Pragmatic Programmers):
局部变量、方法参数和方法名称都应以小写字母或下划线开头...在此初始字符之后,名称可以是字母、数字和下划线的任意组合(附带条件是 @ 后面的字符符号可能不是数字)... 方法名称可能以字符 ?、! 和 = 结尾。
任何 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 字符。
此外,在 Stack Overflow 上,“ Ruby 1.9 如何处理源代码中的字符大小写? ”中对此进行了很好的讨论。由于该问题的年龄,我没有将其标记为重复,但它确实值得参考。
但是,应该问的问题是,非 ASCII 字符是否应该在方法名称中使用?是的,它们很可爱,它们可能具有象征意义,但它们可能会让人很难打字,尤其是对于那些出于某种原因无法输入字符的人。如果它们在 gem 中,创建包含 π 或 λ 的方法名称或常量可能很难输入。
另请注意$KCODE
,在几个链接的分页中提到,现在在 Ruby 1.9.1+ 中已弃用,因此您需要使用魔术线。