В Ruby имена методов могут оканчиваться на ?, ! или =. С воклицательным знаком обычно те, которые меняют сам объект (update!). С вопросительным — предикаты (alive?). Знак равно используют для трюков типа foo.bar = 3. Это не присваивание, это вызов метода bar= объекта foo с параметром 3.
Про восклицательный знак можно догадаться, если, скажем, знаком со Scheme. Про смысл вопросительных многие догадаются. Про знак равенства я узнал только сегодня.
! - это просто часть названия метода. Чтобы сказать программисту что сейчас что-то выполнится. Это не несет в себе никакой логики кроме того что тут кто будет читать код сразу поймет
У вас ооп головного мозга, пройдите к доктору. Ну и в целом однострочники такие этого тоже своего рода спецолимпиада. Никакой обработки ошибок, только прямой флоу, шаг влево, шаг вправо - маловнятный стектрейс на лицо
я когда использую такого рода чейны, а иногда возможно длиннее - использую новую строку для каждого метода. так удобнее в отладке. а в целом - вполне норм.
Если это было бы так, возникают вопросы. Что передаётся аргументом в метод, если «чейн зафейлился»? Будет ли вызываться метод, если в чейне бросят исключение?
Знак = это особый случай, он может быть только в конце имени метода. Особый случай обрабатывается особо, поэтому нет проблем в том, что bar = 3 с пробелом между bar и =, а в bar= пробела нет.
Стоит отойти подальше - и вот уже появляется «с бэнгом - бросаются эксепшены, без бенга - нет», и прочее. А когда приходят веб-макаки, то бэнги добавляются к методам по велению левой пятки.
Но это в действительно востребованном языке программирования (де-факто в занимающем enterpriZe нишу DSL диалекте мегарулезной Джавы).
За знание продуктов от Lightbend реально платят, в отличие от тех «фрилансеров», которые 8 * 5 (+ соцпакет) считают «офисным рабством»(С), не понимая, что 16 * 7 (+ дырка от бублика) - это _добровольное рабство_ и «ветер в кармане».