문제

Why doesn't this statement work?

1>2 ? puts "true" : puts "false" 

Here, I find that most ruby operators are like C with () parentheses having high priority. This code In C

1 > 2 ? printf("true") : printf("false")

executes successfully. Why is ruby code not working?

도움이 되었습니까?

해결책

The error indicates that ternary operator has lower priority than method argument. Ruby parses around the first instance of puts method up to:

puts "true"

and looks if there is another argument, which should be preceded by a comma if there is any. But you have a colon continuing:

 : puts "false"

which cases a syntax error.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top