我很好奇,爲什麼發生這種情況:和|| =在這種情況下
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
答案是:它不會。你一定弄錯了什麼。 –