ruby - переменные - переменная в математике




Почему имя переменной не может заканчиваться символом `?`, А имя метода может? (2)

Имя метода может заканчиваться вопросительным знаком ?

def has_completed?
  return count > 10
end

но имя переменной не может.

В чем причина этого? Не так ли удобно, чтобы имена переменных заканчивались одинаково? Учитывая, что мы обычно не можем определить, является ли foobar методом или переменной, просто взглянув на имя foobar любом случае, почему исключение для ? дело?

И как мне с этим работать? Может быть, всегда использовать has или is в коде?

if process_has_completed
  ...
end

if user_is_using_console
  ...
end

Вы должны попросить Маца получить авторитетный ответ. Однако,

  • Ruby - это нетипизированный язык программирования и переменная как finished? будет означать определенный тип (логический), который кажется мне несколько противоречивым.
  • Вопрос несколько требует приемника (который может ответить на вопрос). Метод должен иметь приемник (объект, на который вызывается метод), поэтому вопросительный знак имеет смысл. С другой стороны, переменная не имеет приемника, это просто контейнер.

Теперь это всего лишь мысль, но я думаю, что методы с именами вроде empty? предполагают, что какой-то чек должен быть сделан внутри, а также объект или класс (в зависимости от контекста). Эта проверка или оценка означает, что необходимо выполнить действие. В целом, поскольку мы запрашиваем (например,?) Объект для некоторого состояния, означает, что существует возможность изменения состояния объекта на протяжении всего жизненного цикла приложения. Переменная может быть устаревшей, но ? -метод (проверка) будет выполнен в определенный момент, таким образом, предоставляя обновленную информацию о каком-либо состоянии, которое может быть представлено в виде булева.

Поэтому я хотел бы подумать, что это конструктивное ограничение, предоставляемое архитектором (Matz), для обеспечения более логичного подхода к кодированию, близкого к реальному.





ruby