Возникнет ли ошибка в Ruby, если строка или её имя начинается с заглавной буквы?

Регистр текста строки не вызывает ошибку. Для имени важны контекст и операция: определение константы, её чтение или присваивание внутри метода.

Короткий ответ

Что ответить на собеседовании

Без кода единственную ошибку назвать нельзя. Литерал "Hello" корректен. Присваивание MyString = "Это строка" на верхнем уровне определяет константу и тоже допустимо. Чтение неопределённой константы обычно приводит к NameError. Прямое присваивание константе внутри тела def недопустимо и вызывает SyntaxError: dynamic constant assignment. Для обычной локальной переменной используют имя вроде my_string.

Подробный разбор

Ответ с пояснениями

Формулировка неоднозначна: речь может идти о первой букве текста внутри кавычек или об имени, которому присваивают строку. Сам по себе заглавный символ не означает ошибку. Ниже приведены независимые примеры, а не один файл для совместного запуска.

1. Заглавная буква внутри строкового литерала допустима.

message = "Hello"
puts message # Hello

Кавычки задают строку; регистр её содержимого не превращает значение в имя переменной или константы. Это обычный строковый литерал Ruby.

2. Присваивание имени с заглавной буквы на верхнем уровне допустимо.

MyString = "Это строка"
puts MyString # Это строка

Здесь MyString — константа, а не локальная переменная. Константа может ссылаться не только на класс или модуль, но и на строку. Для обычной локальной переменной используют имя вроде my_string. Название константы само по себе не делает строковый объект неизменяемым. Правила имён и констант.

3. Чтение неопределённой константы — другая ситуация.

puts MissingString # NameError, если такая константа не определена

При обычном разрешении имён Ruby сообщит uninitialized constant. Ошибка связана с отсутствием определения, а не с невозможностью хранить строку. NameError.

4. Прямое присваивание константе внутри метода запрещено.

def greeting
  MyString = "Hello" # SyntaxError: dynamic constant assignment
end

Это ошибка разбора кода, а не исключение, которое появляется только после вызова greeting. Для временного значения внутри метода нужна локальная переменная; постоянное значение определяют в подходящей внешней области. Официальный FAQ о константах, SyntaxError.

На собеседовании стоит запросить точную строку кода и место её выполнения: одинаковая заглавная буква не определяет одинаковый результат.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку