이 if 문 대신 case 문을 사용할 수 있습니까?Ruby Convert If 문을 대문자로 변환
if (a%3 == 0) then puts "%3"
elsif (a%4 == 0) then puts "%4"
elsif (a%7 == 0 && a%13 == 0) then puts "%%"
이 if 문 대신 case 문을 사용할 수 있습니까?Ruby Convert If 문을 대문자로 변환
if (a%3 == 0) then puts "%3"
elsif (a%4 == 0) then puts "%4"
elsif (a%7 == 0 && a%13 == 0) then puts "%%"
case
when (a % 3).zero? then puts "%3"
when (a % 4).zero? then puts "%4"
when (a % 7).zero? && (a % 13).zero? then puts "%%"
end
이 맞지 않는다고 생각한다. 원래 코드가 아닌 그 조건 중 하나에 해당하지 않을 때 'Nil'을 출력 할 것이다. – Verhogen
네 말이 맞아. puts를 case 문으로 이동하기 만하면됩니다. 그에 따라 답변을 변경했습니다. –
물론 : 그것은 훨씬 더
case
when (a%3 == 0) then puts "%3"
when (a%4 == 0) then puts "%4"
when (a%7 == 0 && a%13 == 0) then puts "%%"
end
입니다되지 않는 이유는 무엇입니까? ;-)
나는 slighly = p – Verhogen
(A == 0 % 7 & & % 13 == 0) (a * 13 % 7 == 0)와 동일하다.
루비의 경우 1 행 if-else 문을 & & 및 ||으로 사용할 수 있습니다. 그것의
puts (a%3 == 0)&&"%3"||(a%4 == 0)&&"%4"||(a%(7*13) == 0)&&"%%"||""
또는
log = (a%3 == 0)&&"%3"||(a%4 == 0)&&"%4"||(a%(7*13) == 0)&&"%%"
puts log if log
는 agly하지만 짧은 보인다.
puts [3,4,91,10].collect do |a|
case 0
when a % 3 then
"%3"
when a % 4 then
"%4"
when a % 91 then
"%%"
end
end
작동을 보려면 해당 권한을 irb에 복사 할 수 있어야합니다. 약간의 7 * 13 = 91 해킹을 용서해주십시오. 그러나 실제 모듈로 작업하는 경우에는 동등해야합니다.
어쩌면 PROC 번호의 ===
def multiple_of(factor)
lambda{ |number| number.modulo(factor).zero? }
end
case a
when multiple_of(3): puts("%3")
when multiple_of(4): puts("%4")
when multiple_of(7*13): puts("%%")
end
를 사용하지만, 더 이상 읽을 수 없습니다. 너 왜 그러고 싶어? –