Domanda

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?

È stato utile?

Soluzione

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top