에서 나는 이런 일이 왜 궁금 해요 :사이의 차이 || 및 || =이 상황
user_uid = user[:user_uid] || next_uid
이 nil
반환 할 수 있습니다, 내가 처음 값이 nil이 경우, 그것은 next_uid
메소드를 실행 생각하지만. 내가 ||=
에 ||
를 변경하는 경우, 다음은하지 않는 다음과 같은 동안 그래서 질문은, 왜
user_uid = user[:user_uid] ||= next_uid
가 ||=
연산자를 필요로하지됩니다 nil
입니다 next_uid
user[:user_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
답변은 이렇습니다 : 그렇지 않습니다. 뭔가를 엉망으로 만들었어야합니다. –