Конкатенация строк в Ruby
Конкатенация строк в Ruby осуществляется с помощью оператора сложения "+". Можно довольно легко запомнить, что символ плюса соединяет/прикрепляет/cклеивает строки в Ruby.
Для наглядности рассмотрим примеры:
"Пё" + "Cя" => "ПёCя"
"Ки" + "Cя" => "КиCя"
Выше приведен пример прямого склеивания строк. В Ruby мы можем также конкатенировать переменные (класса String).
first = "Пё" second = "Ки" third = "Ся" first + third => "ПёСя" second + third => "КиСя"
Полученные строки "ПёСя" и "КиСя" отлично склеились, но хотелось бы сделать их более читабельными. При склеивании мы можем использовать различные методы, которые применимы к строкам.
Для иллюстрации рассмотрим один из них - "downcase":
second + third.downcase => "Кися"
"Пё" + "Ся".downcase => "Пёся"
В случаях, когда нам нужно конкатенировать к строке цифру - мы можем использоваться разные приемы (в зависимости от технических требований и вкуса программиста):
"У меня" + 6 + "кошек"
Этот код вызовет ошибку: TypeError (no implicit conversion of Integer into String)
Для устранения этой проблемы нам нужно превратить Integer (число) в String (строка):
"У меня" + 6.to_s + "кошек" => "У меня6кошек"
Полученная строка нуждается в пробелах. Это можно сделать добавив их в слева и справа стоящие от цифры (преобразованной в string) строки:
"У меня " + 6.to_s + " кошек" => "У меня 6 кошек"
Для упрощения записи можно количество кошек взять в двойные кавычки, тем самым превратив цифру в строку:
"У меня " + "6" + " кошек" => "У меня 6 кошек"
Количество кошек периодически меняется и мы можем использовать переменную. Ниже приведены несколько вариантов конкатенации строк и цифры.
# Тут мы получаем случайное число, # которое преобразуем в строку во время конкатенации. dynamic_cats_counter = rand(5..9) "У меня " + dynamic_cats_counter.to_s + " кошек"
# Тут мы получаем случайное число # и сразу конвертируем в строку. dynamic_cats_counter = rand(5..9).to_s "У меня " + dynamic_cats_counter + " кошек"
# Тут мы получаем случайное число # и интерполируем его внутри строки # используя привычный синтаксис Ruby. dynamic_cats_counter = rand(5..9) "У меня " + "#{dynamic_cats_counter}" + " кошек"
Если есть возможность лишний раз не использовать конкатенацию для построения простых строк - добавляйте переменные непосредственно внутрь.
Запись станет более читабельной и простой для восприятия. Обратите внимание, что интерполяция в строках конструкции "#{var}" возможна только при использовании двойных кавычек.
dynamic_cats_counter = rand(5..9) "У меня #{dynamic_cats_counter} кошек"
Для склеивания строк в Ruby можно использовать оператор "<<", который передает одну строку в конец другой (тем самым изменяя/модифицируя ее).
Будьте аккуратны, используя этот оператор.
first = "Пё" second = "Ся" first << second => "ПёCя" first => "ПёCя" second => "Ся"
Отдельно стоит упомянуть о возможности умножения строк. Оператор умножения "*" прибавляет к концу строки ее саму столько раз, на сколько вы укажете:
"Мяу" * 10 => "МяуМяуМяуМяуМяуМяуМяуМяуМяуМяу" "Ня" * 3 => "НяНяНя"