Ruby имеет довольно мощную конструкцию case..when..else
, когда вам нужно сопоставлять критерии с одной переменной. Что такое «канонический» способ сопоставления критериев с несколькими переменными без просто вложения case
заявлений?Операторы case с несколькими переменными
Обертывание несколько переменных в массиве (например, [x, y]
) и согласование против него не эквивалентно, потому что Рубин не будет применять магический case ===
оператора к элементов массива; оператор применяется только к самому массиву.
Я собираюсь ответить и отвечу сообществом-вики с (побежденным) ударом по этому вопросу.
Насколько я знаю, Ruby не распространяется '' === каждому элементу рекурсивно ... http://ideone.com/yMAlZ – Nakilon
@ Nakilon Я протестировал, и он, похоже, не применяет его рекурсивно. Например, '['hello', 3]' не будет соответствовать '[String, 3]'. – ClosureCowboy
aaaa ... извините, моя вина. Забытая разница между '==' и '==='. – Nakilon