A. Why does it output "?"? p(??) p(%_?_) %… is a string literal. e.g.) %_?_ == "?" , %!???! == "???" ?_ is a character literal. e.g.) ?_ == "_" , ?? == "?"
Answer p(????::?:) p(% %s% %%%%) 1. ?? is "?" 2. ? is a part of conditional op 3. ?: is ":" 4. : is a part of conditional op 5. ?: is ":" "?" ? ":" : ":" 1. % %s% is "%s%" 2. % is a format op(Like sprintf) 3. %%% is "" sprintf("%s%", "")
Answer a = ["1","2","3"] a&.map(&:to_i)&.&([1]) # => [1] &. is a safe navigation op(nil guard). &:to_i is an implicit to_proc op. A safe navigation op & is an intersection op call (like [1,2,3] & [1])