Ruby : ENV 변수가 있으면 가장 간결하게 사용하고 그렇지 않으면 기본값을 사용합니다.
Ruby에서는 변수가 설정되어 있으면 사용하는 줄을 작성하려고합니다. 그렇지 않으면 기본값으로 설정합니다.
myvar = # assign it to ENV['MY_VAR'], otherwise assign it to 'foobar'
이 코드를 다음과 같이 작성할 수 있습니다.
if ENV['MY_VAR'].is_set? #whatever the function is to check if has been set
myvar = ENV['MY_VAR']
else
myvar = 'foobar'
end
그러나 이것은 다소 장황하고 가능한 가장 간결한 방식으로 작성하려고 노력하고 있습니다. 어떻게 할 수 있습니까?
myvar = ENV['MY_VAR'] || 'foobar'
NB 이것은 약간 부정확합니다 (해시가 값을 포함 할 수있는 경우 nil
). 그러나 ENV
문자열 만 포함하기 때문에 아마도 충분할 것입니다.
일반적인 해시의 가장 신뢰할 수있는 방법은 키가 있는지 묻는 것입니다.
myvar = h.has_key?('MY_VAR') ? h['MY_VAR'] : 'default'
당신이 걱정하지 않는 경우 nil
또는 false
값은, 다음의 접근 방식 undur_gongor 좋은 것입니다 (시이 또한 잘해야한다 (즉 당신이 "거기"로 그들에게 동일하게 취급 할) h
입니다 ENV
) :
myvar = h['MY_VAR'] || 'foobar'
그리고 nil
해시에있는 것을 허용하고 싶지만 거기에없는 척 (즉, nil
값이 "없음"과 동일 함)하고 false
해시에 a를 허용하는 경우 :
myvar = h['MY_VAR'].nil? ? 'foobar' : h['MY_VAR']
결국 그것은 당신의 정확한 의도에 달려 있으며 당신의 의도와 일치하는 접근 방식을 선택해야합니다. if/else/end
와 사이의 선택 ? :
은 물론 취향의 문제이고 "간결하다"는 "최소 문자 수"를 의미하지는 않으므로 if
원하는대로 삼항 또는 블록을 자유롭게 사용하십시오 .
hash.fetch(key) { default_value }
값이 있으면 반환 default_value
하고 키가 없으면 반환 합니다.
변수가 아닌 해시 키에 대해 실제로 묻기 때문에 제공 한 특정 예제와 관련이 없지만 Ruby는 변수 정의를 확인하는 방법을 제공합니다. 다음과 같이 defined?
키워드를 사용합니다 (메서드가 아니라 인터프리터의 특수 처리가 필요하므로 키워드).
a = 1
defined? a
#=> "local-variable"
@a = 2
defined? @a
#=> "instance-variable"
@@a = 3
defined? @@a
#=> "class-variable"
defined? blahblahblah
#=> nil
따라서 다음을 수행 할 수 있습니다.
var = defined?(var) ? var : "default value here"
내가 아는 한, 그것은 NameError 위험을 감수하지 않고 묻는 방식으로 변수를 정의 하는 추악한 begin
/ rescue
/ end
블록 이외의 유일한 방법 입니다. 내가 말했듯이 이것은 다음과 같이 해시에 적용되지 않습니다.
hash = {?a => 2, ?b => 3}
defined? hash[?c]
#=> "method"
즉 []
, 액세스에 사용하는 키 / 값 쌍이 아니라 메서드 가 정의되어 있는지 확인하고 있습니다.
myvar = ENV.fetch('MY_VAR') { 'foobar' }
'foobar'
ENV['MY_VAR']
이 설정되지 않은 경우 기본값 입니다.
ENV [ 'MY_VAR']가 거짓 값으로 판명 되더라도 작동하는 또 다른 가능한 대안
myvar = ENV['MY_VAR'].presence || 'foobar'
수요 내가 쓴 보석이 매우 간결하고 건조 할 수 있습니다 :
myvar = demand(ENV['MY_VAR'], 'foobar')
ENV['MY_VAR']
존재하는 경우에만 사용 됩니다. 즉, nil, 비어 있거나 공백 전용 문자열 인 경우에만 삭제하고 대신 기본값을 제공합니다.
에 대한 유효한 값 ENV['MY_VAR']
이 거짓 (예 :) false
이거나 잘못된 값이 진실 (예 :)이면 using과 같은 ""
솔루션 ||
이 작동하지 않습니다.
myvar = ENV['MY_VAR'].is_set? ? ENV['MY_VAR'] : 'foobar'
이렇게하면 .is_set을 유지할 수 있습니까? 방법.
'programing' 카테고리의 다른 글
Django (비 모델) 양식 미리 채우기 (0) | 2021.01.17 |
---|---|
항목을 가로로 배치하는 WPF ListBox (0) | 2021.01.17 |
Functor가 아닌 (또는 Traversable이 아닌) Foldable의 예? (0) | 2021.01.17 |
C # : 바이트 배열을 문자열로 변환하고 콘솔로 인쇄 (0) | 2021.01.17 |
jQuery에서 부모와 관련된 offset ()을 얻는 방법은 무엇입니까? (0) | 2021.01.17 |