Ruby가 참 및 거짓 문자열을 할당합니까?

Sep 02 2020

true와 false에 문자열을 할당 할 수 있습니까?

예를 들어 해시로 시작합니다.

shopping_list = {
  "milk" => false,
  "eggs" => false,
  "jalapenos" => true
}

puts "Here is your Shopping List:"

shopping_list.each do |key, value|
  puts "#{key} - #{value}"
end

나는 출력이에 대해 "구매 됨" true과 "구매하지 않음 "을 넣기를 원 했습니다 false.

답변

2 TimurShtatland Sep 02 2020 at 16:39

인라인 사용 if 또는 를 ternary if operator:

shopping_list = {
  "milk" => false,
  "eggs" => false,
  "jalapenos" => true
}

puts "Here is your Shopping List:"

shopping_list.each do |key, value|
  puts "#{key} - #{if value then 'purchased' else 'not purchased' end}"
  # or this:
  # puts "#{key} - #{value ? 'purchased' : 'not purchased'}"
end

인쇄물:

Here is your Shopping List:
milk - not purchased
eggs - not purchased
jalapenos - purchased

사용할 연산자 : 삼항 연산자 ( ?:) 또는 if/then/else/end?

여기 if/then/else/end에서 선택 했지만 두 옵션 모두 허용되는 것으로 나열 했습니다 . 당신이 선택하는 스타일의 문제입니다.

일부 Stack Overflow Ruby 사용자는 일반 if ... then ... else ... end. 더 길지만 더 명확하고 관용적입니다. 예를 들어 다음 답변을 참조하십시오.
https://stackoverflow.com/a/2175392/967621
https://stackoverflow.com/a/4253250/967621

다른 Stack Overflow 사용자 ?:는 익숙하다면 더 간결하고 명확한을 선호 합니다. 또한 The Ruby Style Guide는 다음 사항에 동의합니다.

구문 ?:보다 삼항 연산자 ( )를 선호합니다 if/then/else/end. 더 일반적이고 분명히 더 간결합니다.

# bad
result = if some_condition then something else something_else end

# good
result = some_condition ? something : something_else
3 Spikie Sep 02 2020 at 16:37

질문에 대한 답변이 되었습니까?

shopping_list.each do |key, value|
   puts "#{key} - #{purchased?(value)}"
end


def purchased?(boolean)
  boolean ? 'purchased' : 'not purchased' 
end
2 Stefan Sep 02 2020 at 16:43

나는 출력이 true 인 경우 "purchased"를, false 인 경우 "not purchase"를 표시하기를 원했습니다.

일반적으로 다음 if식 으로 시작 합니다 .

shopping_list.each do |key, value|
  if value
    puts "#{key} - purchased"
  else
    puts "#{key} - not purchased"
  end
end

나중에 중복 코드 부분을 제거 할 수 있습니다.


true와 false에 문자열을 할당 할 수 있습니까?

매핑처럼 들립니다. 다른 해시를 사용할 수 있습니다.

states = {
  true => 'purchased',
  false => 'not purchased'
}

쇼핑 목록을 인쇄 할 때 해당 해시를 참조하십시오.

shopping_list.each do |key, value|
  puts "#{key} - #{states[value]}"
end

여기 에서 해시 에서에 states[value]대한 출력 값을 가져옵니다 .valuestates