对方法的名称有哪些限制 Ruby?
例如,我找到了方法的名称
在代码的下一个片段中,我不知道符号是否是
专门的关键字或只是方法方法的一部分。
bundler?
在代码的下一个片段中,我不知道符号是否是
?
专门的关键字或只是方法方法的一部分。
# This is a predicate useful for the doc:guides task of applications.
def bundler?
# Note that rake sets the cwd to the one that contains the Rakefile
# being executed.
File.exists?/'Gemfile'/
end
没有找到相关结果
已邀请:
5 个回复
涵秋
赞同来自:
和标点符号
,
,
.
该方法的名称不能以数字和字符开头
,
和
只能出现在最后。
在方法的方法中,您可以使用除此之外的符号 ASCII, 但这可能导致非常令人困惑的情况,不应该是常见的做法。
这是一个很好的做法,虽然没有绑定从行符号开始的方法的名称,因为以大写字母开头的名称是常量 Ruby. 您仍然可以使用该方法的常量名称,但是您将无法在没有括号的情况下调用它,因为偶数纳内勒将搜索名称作为常量:
一些非常广泛和一致使用。
协议
确定方法的名称时:
方法的名称是完整的小写字母,带有下划线
作为名称中的单词分隔符 /例如,
,
, .../.
谓词
有一个问号
作为最后一个符号 /例如 ,
,
, .../. 虽然谓词通常返回逻辑值,但它并不总是这样:这些方法只需返回
或者
, 如果谓词很重要 false, 否则任何其他值 /例如,
回报
, 如果文件不存在,则文件大小就像
否则/.
改变调用它们的对象状态或具有异常行为的方法具有感叹号
作为最后一个符号; 这些方法有时被称为
突变者
, 因为它们通常是其他方法的破坏性或本地版本。 /例如,
,
, .../.
pl
有平等的迹象
作为最后一个符号 /例如,
Array#[]=
,.../; 互联网 Ruby 提供
语法糖。
呼叫方法 setter:
Ruby 还允许您使用操作员符号确定操作员作为方法名称:
一元操作员方法不发送任何参数; 二进制运算符方法传输参数并在其上工作
.
严格坚持运营商的数量是重要的; 虽然您可以使用其他arity确定操作员方法 /例如,方法
, 这需要两个参数/, Ruby 不允许您调用操作员语法的方法 /但是,它将使用点语法/.
这是一个很好的做法,可以尽可能地坚持操作员的原始语义:它必须直观地对操作员原始值的那个,因为它适用于用户类。
语言还提供语法糖
特别的
, Neoperoto方法
[]
, 这通常用于访问数组的值和 hash. 方法
[]
它可以用任意的arity确定。
对于表中的每个二进制运算符,除了简化,平等,比较和与样品的比较之外, Ruby 还提供缩写约会 /例如,
在之前展开
/; 您无法将它们定义为方法,但您可以通过定义所基于的运算符来更改其行为。
这些字符都不可以在普通的方法中使用。 /例如,
或者
不是允许的方法名称/.
二哥
赞同来自:
+
:
这个事实可能有用:例如
http://api.rubyonrails.org/cla ... -test
方法 Rails' ActiveSupport::Testing::Declarative.test 用它不得进行复杂的转换:
更常见的名称,可以与另一个测试冲突,命名为:
这是说明的
http://guides.rubyonrails.org/ ... odels
.
好奇心:发生类似的东西 Java, 字节代码方法的名称提供比语言更多的选择 Java:
https://coderoad.ru/26791204/
董宝中
赞同来自:
,
或者
. 也允许下划线。 除了 , 有几种方法 , 这看起来像运营商 /例如 ,
,
,
,
[]
/, 您可以确定您自己的课程。
小明明
赞同来自:
未命名一般
, 他将尝试调用一个名为的方法
:
事实上,没有命名方法
, 被定义为
, 但课程中有一个
和
.
用某种语言
- 这是函数调用运算符,它非常类似于在此发生的内容。
例如,这是使用的 Rails' JBuilder:
https://github.com/rails/jbuilder
这将在页面上记录。 196 图书 O'Reilly Ruby:
Ruby 1.9 提供额外的方式来调用对象
; 替代方括号,您可以使用带有点前缀的括号:
看起来呼叫对没有该方法的名称的方法。 这不是可以确定的操作员,而是导致该方法的语法糖
. 它可以与任何确定方法的对象一起使用
并且不限于物体
.
莫问
赞同来自:
,
, 如果他们不是开始,
, 和
/对于布尔函数/, 和
/对于破坏性的功能/, 和
/用于定居者/.