我很好奇,为什么发生这种情况:和|| =在这种情况下
user_uid = user[:user_uid] || next_uid
可以返回nil
,但我认为如果第一个值是零,它执行next_uid
方法。如果我改变||
到||=
,则返回的next_uid
如果user[:user_uid]
是nil
所以现在的问题是,为什么
user_uid = user[:user_uid] ||= next_uid
要求||=
操作而下面没有结果?
@terms_accepted = options[:terms_accepted] || false
相关代码:问题
def insert(user)
store_user(user)
end
def get(user_uid)
#validations
users[user_uid]
end
private
def store_user(user)
user_uid = user[:user_uid] || next_uid
users[user_uid] = user
return user_uid
end
def next_uid
@memory[:user_uid] ||= 0
"#{@memory[:user_uid] += 1}"
end
测试代码:
it "stores users" do
user = {
:user_uid => nil
}
uid = subject.insert(user)
assert_user_was_stored(uid)
end
def assert_user_was_stored(expected_uid)
result = subject.get(expected_uid)
assert_equal expected_uid, result[:user_uid]
end
你的问题是什么? –
我认为这会有所帮助,如果你提供'next_uid'代码 – xlembouras
答案是:它不会。你一定弄错了什么。 –