Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
考虑下面的简单代码:
post '/xxx' do puts params end
这很好用。现在考虑以下修改
post '/xxx' do params = params puts params end
现在参数为零!我是 Ruby 新手,不知道为什么会发生这种行为。显然我不想执行无用的params = params表达式,但我试图做一些更复杂的涉及修改的事情params,发现它总是变成nil.
params = params
params
nil
在第一个版本中,您正在调用一个被调用的方法params并将其返回值传递给puts.
puts
在第二个版本中,您将创建一个名为params(隐藏同名方法)的局部变量并将其分配给自身。
考虑以下示例:
def foo 1 end p foo # outputs `1` foo = foo p foo # outputs `nil`
发生这种情况可能并不明显,因为在 Ruby 中访问局部变量和调用方法self看起来完全一样。
self