2012-10-16 2 views
1

내 삼항 평가에 코드를 넣으면 오류가 발생하지만 true 또는 false을 입력하면 작동하는 것으로 보입니다. 당신은 괄호가 필요세 가지 평가를 매개 변수화해야합니까?

>test = [nil] 
=> [nil] 

>test.any? ? puts "AAA" : puts "BBB" 
SyntaxError: (irb):16: syntax error, unexpected tSTRING_BEG, expecting keyword_do or '{' or '(' 
test.any? ? puts "AAA" : puts "BBB" 
       ^
(irb):16: syntax error, unexpected ':', expecting $end 
test.any? ? puts "AAA" : puts "BBB" 

>test.any? ? true : false 
=> false 

>test << 1 
=> [nil, 1] 

>test.any? ? true : false 
=> true 


>test.any? ? puts "AAA" : puts "BBB" 
SyntaxError: (irb):14: syntax error, unexpected tSTRING_BEG, expecting keyword_do or '{' or '(' 
test.any? ? puts "AAA" : puts "BBB" 
       ^
(irb):14: syntax error, unexpected ':', expecting $end 
test.any? ? puts "AAA" : puts "BBB" 
         ^

답변

3

:

여기 내 코드입니다.

>> test.any? ? puts("AAA") : puts("BBB") 
BBB 
=> nil 

인라인 기능에서 괄호없는 호출을 피하십시오.

+0

감사합니다. 위의 예제가 이제는 작동하지만이 문제를 시작하는 코드 줄은 다음과 같습니다 (방금 괄호를 추가했습니다). 그러나 여전히 행복하지는 않습니다. @ selected_ratings.any? ? (Movie.where (: rating => @ selected_ratings.keys)) : (@movies = Movie.all)'더 복잡한 삼항에 대한 생각은? – ProfessionalAmateur

+0

어쩌면 오류를 표시 할 수 있습니까? 그러나 문제가 더 이상 삼항법에 있다고 생각하지 않습니다. – oldergod

+0

방금 ​​얻었습니다. 첫 번째 옵션에는 두 번째 옵션과 같이'@movies ='가 없었습니다. 협조 해 주셔서 감사합니다. – ProfessionalAmateur

관련 문제