大家原谅我,我在Ruby方面充其量也只是个新手。我只是好奇地想要了解一下似乎相当奇怪的行为的解释。
我正在使用Savon库与我的Ruby应用程序中的SOAP服务进行交互。我注意到以下代码(在我编写的一个类中处理此交互)似乎会传递空值,而我希望将成员字段的值传递进去:
create_session_response = client.request "createSession" do
soap.body = {
:user => @user, # This ends up being empty in the SOAP request,
:pass => @pass # as does this.
}
end
尽管@user
和@pass
都被初始化为非空字符串,但仍然存在问题。当我改用locals后,它按照我预期的方式工作:
user = @user
pass = @pass
create_session_response = client.request "createSession" do
soap.body = {
:user => user, # Now this has the value I expect in the SOAP request,
:pass => pass # and this does too.
}
end
我猜这种(对我来说)奇怪的行为一定与我在块内有关,但实际上,我一点都不知道。有人能给我解释一下吗?
instance_eval
的例子后,帮助我理解了它。 - Dan Tao