2011-10-26 4 views
2

Ruby를 처음 사용했습니다. 다음과 같은 방법이 있습니까? (이 정의 된 경우) 또는 (이 정의되지 않은 경우) Ruby : 변수가 해시 정의 내에 있는지 확인하는 방법

hash = { 
    :key1 => defined? value1 ? value1 : nil, 
    :key2 => defined? value2 ? value2 : nil 
} 

puts hash[:key1] # outputs: ["expression"] 

상기 코드

대신 값의 표현식을 저장한다.

+1

조금 더 설명해 주시겠습니까? 세 번 질문을 읽었지만 여전히 문제가 무엇인지 이해하지 못합니다. –

답변

1

lambda 또는 Proc을 찾고 있습니다.

hash = { 
    :key1 => lambda { defined?(value1) ? value1 : nil }, 
    :key2 => lambda { defined?(value2) ? value1 : nil } 
} 

hash[:key1].call 

http://www.ruby-doc.org/core-1.9.2/Kernel.html#method-i-lambda

+0

감사합니다. 그냥 괄호를 추가하여 찾은 것을 찾았습니다.'hash = {: key1 => (defined? value1)? value1 : nil}' –

0

정확히 무엇을하고 싶습니까?

hash [: key] .nil?

은 키가 존재하는지 여부에 따라 true 또는 false를 반환합니다. 그것이 당신이 찾고있는 것인지 확실하지 않습니다.

2

d11wtg 대답 할 것입니다. 또한 괄호를 추가하면 값이 예상대로 저장됩니다.

hash = { 
    :key1 => (defined? value1) ? value1 : nil, 
    :key2 => (defined? value2) ? value2 : nil 
} 
관련 문제