質問

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