ruby - Ternary operator returning false. Why? -


i have code:

guessed_letter = [] word_to_guess = "hair" letter_holder = [] word_to_guess.split("").each |letter|   letter_holder << (guessed_letter.include?(letter)) ? letter : "_" end letter_holder.join('') 

i have word "hair" being split, nothing in guessed_letter array. ternary operator returns false. shouldn't return underscore each of letter?

restructure code this:

guessed_letter = [] word_to_guess = "hair" letter_holder = [] word_to_guess.split("").each |letter|   letter_holder << (guessed_letter.include?(letter) ? letter : "_") end  letter_holder.join('') # => "____" 

what issue original code?

look @ following line:

letter_holder << (guessed_letter.include?(letter)) ? letter : "_" 

following order of precedence, code means:

( letter_holder << (guessed_letter.include?(letter)) ) ? letter : "_" |____________________________________________________| |____________|                  |                                            |                  .                                            .     (element getting inserted first)               (followed ternary op on array) 

hence false time guessed_letter.include?(letter) false (since guessed_letter empty array)


Comments