1.以问号结尾的方法。一般表示该方法用于查询。如:self.frozen?
2.以感叹号结尾的方法。一般表示这是危险的,或者会修改接收者对象的方法。
如:
def insert_sort!
(0...self.length).to_a.each do |j|
key = self[j]
i = j - 1;
while i >= 0 and self[i] > key
self[i+1] = self[i]
i = i-1
end
self[i+1] = key
end
self
end
运行上述代码之后,会对传入的数据进行排序,修改了(接收者)对象。
Ruby核心类都定义了成对的方法,它们有同样的名字,彼此的差别在于其中一个以感叹号结尾,而另一个没有,通常情况下,不带感叹号的方法返回调用该方法的对象的一个修改过的拷贝,而带感叹号的方法则是一个可变的方法,该方法会修改原对象。
3.以等号结尾的方法。一般被赋值的方法以等号结尾。