方法名称格式

时间:2012-10-24 14:07:19

标签: ruby methods

哪些字符串可以作为Ruby的方法名称?我特别想知道非单词字符在什么方面可以成为方法名称的一部分。请提供一套详尽的规则/清单。

修改 Phrogz对Josh Lee链接问题的回答有一个链接到下一页,但这是几年前的,并且已经过时了。例如,Proc#()缺失。有谁知道更新过的?

enter image description here

3 个答案:

答案 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.htmlhttp://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+中弃用,因此您需要使用魔术线。