Символы и строки
Когда использовать символы
«Символы и строки» — бесплатный урок Ruby Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Ruby Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Ruby Academy содержит 4 уроков всего.
Что такое символ?
Символ — это лёгкое неизменяемое имя, записываемое с начальным двоеточием, например :name. Символы часто используют как идентификаторы и ключи хеша.
status = :active
puts status
puts status.classСимволы неизменяемы
В отличие от строк, символы нельзя изменить. Если :hello уже существует, он всегда остаётся прежним.
puts :hello.frozen?
puts "hello".frozen?Один символ — один объект
Каждое использование одного и того же символа указывает на один общий объект в памяти. Две одинаковые строки обычно являются разными объектами.
puts :ruby.object_id == :ruby.object_id
puts "ruby".object_id == "ruby".object_idПочему символы экономят память
Поскольку одинаковые символы используют один общий объект, повторное применение символов в качестве ключей эффективно расходует память. Для строк при каждом использовании создавался бы новый объект.
ids = [:a, :a, :a]
puts ids.map(&:object_id).uniq.lengthПреобразование между ними
Используйте to_sym, чтобы создать символ из строки, и to_s, чтобы выполнить обратное преобразование.
word = "color"
sym = word.to_sym
puts sym
puts sym.to_s.upcaseСимволы в качестве ключей хеша
Символы — самые распространённые ключи хеша в Ruby, потому что они работают быстро и никогда не изменяются.
person = { name: "Ada", age: 36 }
puts person[:name]
puts person[:age]Сокращённый синтаксис
Если ключи являются символами, запись name: "Ada" является сокращением для :name => "Ada". Обе записи создают ключи-символы.
a = { color: "red" }
b = { :color => "red" }
puts a == bСимволы в вызовах методов
Символы задают имена методов для таких инструментов, как send и map(&:method). Запись &:upcase превращает символ в блок.
words = ["a", "b", "c"]
puts words.map(&:upcase).inspectКогда использовать строку
Используйте строку, когда значение нужно отображать, создавать или изменять: например, для имён, сообщений или содержимого файла. У строк есть множество методов для работы с текстом.
greeting = "Hello"
greeting << ", world"
puts greetingКогда использовать символ
Используйте символ для постоянных идентификаторов: ключей хеша, состояний и имён параметров. Они показывают намерение и не изменяются случайно.
def move(direction)
puts "Moving #{direction}"
end
move(:north)Сравнение символов и строк
Символ и строка с одинаковыми буквами не равны. Это значения разных типов.
puts :name == "name"
puts :name.to_s == "name"Быстрая проверка
Проверьте, что Вы знаете о символах.
Итоги
Теперь Вы знаете разницу:
- Символы неизменяемы, общие и идеально подходят для ключей и идентификаторов
- Строки изменяемы и предназначены для работы с текстовыми данными
- преобразуйте их с помощью
to_symиto_s :a == "a"возвращает false
Далее: создание и чтение хешей.
config = { mode: :fast }
puts config[:mode]Часто задаваемые вопросы
Урок «Символы и строки» бесплатный?
Да — полный текст урока «Символы и строки» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Ruby Academy, подпишись на CoddyKit PRO. Курс Ruby Academy содержит 4 уроков всего.
Чему я научусь в уроке «Символы и строки»?
Когда использовать символы Ты практикуешь Ruby Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Ruby Academy?
Предыдущий опыт не требуется. Ruby Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Символы и строки»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Ruby Academy?
Да. Каждый урок Ruby Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.