xavier 2008-7-8 21:31
可以自己定义带!的方法么
既是修改方法调用者的方法。
如String#chomp!或者Array#sort!
直接修改self会报错
可别告诉我在方法名后面加!就行了.......
yawl 2008-7-8 23:42
确实是方法名后面加!就行了。 !不过是个友好的记号。
如果你的问题其实是怎么绕过‘Can't change the value of self‘。这个我确实不知道怎么在纯ruby里做(除了用其他现成的destructive method)。
Array#sort!可以这样实现:
class Array
def sort!
sorted_copy = self.sort
self.clear
sorted_copy.each {|e| self << e}
end
end
a=[4,3,2]
p a.sort!
p a
xavier 2008-7-9 17:04
我的问题确实是绕过‘Can't change the value of self‘
数组和hash可以用实例方法replace.
但是其他对象不知道怎么办。
黑马 2008-7-9 19:19
class A
def initialize(x)
@x=x
end
def change!
@x=1
end
end
a=A.new
a.change!
这能算是修改了调用者嘛?
xavier 2008-7-10 19:18
如果用某个实例变量表示这个对象的内容话.....可以算吧
zoubin200999 2008-9-4 15:30
不能算
那change方法呢?
where?