Вопрос по терминологии Ruby:Это декларация Ruby, определение и присвоение одновременно?

StackOverflow https://stackoverflow.com/questions/672135

Вопрос

Если я говорю:

х = "абв"

это похоже на объявление, определение и присвоение одновременно, независимо от того, говорил ли я что-нибудь о x в программе раньше.

Это верно?

Я не уверен, какая в Ruby правильная терминология для объявлений, определений и присваиваний, и есть ли вообще различие между этими вещами из-за динамической типизации в Ruby.

@tg:Что касается вашего пункта № 2:даже если x существовал до оператора x = «abc», не могли бы вы назвать оператор x = «abc» определением/переопределением?

Это было полезно?

Решение

  1. Декларация: Нет.
    Нет смысла говорить об этом объявляя переменные в Ruby, потому что в этих языках нет ничего аналогичного объявлению.В языках, предназначенных для компиляторов, есть объявления, поскольку компилятору необходимо заранее знать, насколько велики типы данных и как получить доступ к различным их частям. например, если я скажу на C:

    int *i;
    

    тогда компилятор узнает, что где-то для i отведено немного памяти, и она настолько велика, насколько она должна быть для хранения указателя на int.В конце концов компоновщик перехватит все ссылки на i вместе, но, по крайней мере, компилятор знает, что он где-то здесь.

  2. Определение: Вероятно.
    А определение обычно устанавливают для чего-либо начальное значение (по крайней мере, в знакомых компилируемых языках).Если x не существовало до x = "abc" то, я думаю, вы могли бы назвать это определением, поскольку именно тогда Ruby должен присвоить значение символу x.

    Опять же, однако, определение — это особый термин, который люди обычно используют, чтобы отличить первоначальное статическое присвоение значения какой-либо переменной от объявления этой переменной.В Ruby такого утверждения нет.Обычно вы просто говорите, что переменная определенный если ему присвоено значение где-то в вашей текущей области, и вы говорите, что это неопределенный если это не так.

    Обычно вы не говорите об этом, имея определение, потому что в Ruby это всего лишь назначение.Нет никакого особого контекста, который бы оправдал ваши слова определение как и в других языках.

    Что подводит нас к...

  3. Назначение: Да.
    Вы определенно можете назвать это назначение, поскольку он присваивает значение символу x.Я не думаю, что кто-то с этим не согласится.

Другие советы

Довольно много.И если на следующей строке вы сделаете:

x = 1

Тогда ты только что переопределено его, а также присвоил ему (теперь это целое число, а не строка).Утиный набор текста сильно отличается от того, к чему вы, вероятно, привыкли.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top