3?"bar":"qux" only has the ternary expression as a valid parsing of ?
foo?"bar":"qux" fails because foo may be a method and foo? is also a valid method identifier.
foo ?"bar":"qux" fails because ?" uses the ? unary operator that makes the next character a string. So ?"bar" becomes the string " followed by what looks to be an identifier.
And so…
? character is a valid part of an identifier (but only at the end of a method name)
?x unary operator to create a String from a character
Talking with a rubyist:
3?"bar":"qux"
only has the ternary expression as a valid parsing of?
foo?"bar":"qux"
fails becausefoo
may be a method andfoo?
is also a valid method identifier.foo ?"bar":"qux"
fails because?"
uses the?
unary operator that makes the next character a string. So?"bar"
becomes the string"
followed by what looks to be an identifier.And so…
?
character is a valid part of an identifier (but only at the end of a method name)?x
unary operator to create a String from a characterexpr?expr:expr
ternary operatorAnd so…
puts "".empty? ? ?t:?f