基于 this blog tap 的工作方式与我同意的类似。
class Object
def tap
yield self
self
end
end
这是我的实验
class Lab
end
puts Lab.new.tap {|e| e = 'Boom' }
在上面的例子中,因为我试图改变 self 的值,所以 ruby 应该会崩溃。但它不会爆炸。
下面是一个试图改变 self 的尝试失败的案例。所以我的问题是为什么在上述情况下 ruby 没有爆炸。
class Lab
def lab
puts self
self = 'Boom' #=> exception Can't change the value of self
puts self
end
end
最佳答案
原因与此代码段中未分配self
的原因相同:
hello = self
hello = 'foo'
e
只是一个变量,给它赋值只是给它赋值,它不会影响 e 的当前值。
关于ruby - 为什么在给自己分配某些东西时我没有收到错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4390347/