• jvisick@programming.dev
    link
    fedilink
    arrow-up
    3
    ·
    1 year ago

    I agree! I don’t think 3?”stuff”:”empty” should work at all because I think it’s an insane way to type a ternary :) I’m also very open to admitting that it’s just my own strongly worded opinion.

    I think that in most cases, syntactically significant whitespace is a horrible idea - the one exception being that you should have space between operators/identifiers/etc. I don’t care how much, and 4 spaces should have no more special meaning than 1, but I do think that using a space to indicate “this thing is a different thing than the thing before it” is important.

    • shagie@programming.dev
      link
      fedilink
      arrow-up
      2
      ·
      edit-2
      1 year ago

      Talking with a rubyist:

      • 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
      • expr?expr:expr ternary operator

      And so…

      puts "".empty? ? ?t:?f