В статьях про "Immutable object" или про "Неизменяемый объект" в Википедии, во всех примерах речь идет о типах, все экземпляры которых неизменяемы, хотя согласно определениям данным в начале статей i в примере ниже является неизменяемым объектом:
Здравствуйте, igna, Вы писали:
I>В статьях про "Immutable object" или про "Неизменяемый объект" в Википедии, во всех примерах речь идет о типах, все экземпляры которых неизменяемы, хотя согласно определениям данным в начале статей i в примере ниже является неизменяемым объектом:
I>
I>int const i = 123;
I>
I>Так ли это, можно ли назвать i здесь immutable?
В контексте "Immutable object" — нет. Immutable object здесь 123. А i — это имя переменной (пусть и immutable).
Здравствуйте, igna, Вы писали:
I>Здравствуйте, samius, Вы писали:
S>>Immutable object здесь 123.
I>Вот хрен, 123 здесь integer literal (значением которого инициализируется объект именуемый i).
integer literal это понятие во-первых из конкретного языка, во-вторых понятие времени разбора грамматики. в рантайме нет такого "integer literal". И в терминах OOP тоже нет такого понятия.
И i — это не имя объекта. Это его идентификатор в терминах OOP.
I>На неважно, главно, что ты увидел определение неизменяемого объекта здесь:
I>
Здравствуйте, samius, Вы писали:
S>integer literal это понятие во-первых из конкретного языка, во-вторых понятие времени разбора грамматики. в рантайме нет такого "integer literal". И в терминах OOP тоже нет такого понятия.
Во первых пример-то и был на конкретном языке, а не на ООПе; во-вторых "в рантайме" никакого 123 и нет, а есть объект инициализированный значением этого литерала.
S>И i — это не имя объекта. Это его идентификатор в терминах OOP.
А употребленное тобой "имя переменной" это в терминах чего было?
Здравствуйте, igna, Вы писали:
I>Вот хрен, 123 здесь integer literal (значением которого инициализируется объект именуемый i).
I>На неважно, главно, что ты увидел определение неизменяемого объекта здесь:
I>
Здравствуйте, Lloyd, Вы писали:
L>Да, тип Int32 — неизменяемый. Отсутствие/наличие const тут погоды не делает, т.к. этот модификатор относится не к типу, а к переменной.
К объекту то есть (по крайней мере в C или C++, на котором пример, i является объектом). И вот определение из Википедии:
an immutable object is an object whose state cannot be modified after it is created
Здравствуйте, igna, Вы писали:
I>Здравствуйте, samius, Вы писали:
S>>integer literal это понятие во-первых из конкретного языка, во-вторых понятие времени разбора грамматики. в рантайме нет такого "integer literal". И в терминах OOP тоже нет такого понятия.
I>Во первых пример-то и был на конкретном языке, а не на ООПе; во-вторых "в рантайме" никакого 123 и нет, а есть объект инициализированный значением этого литерала.
А в конкретном языке есть понятие "Immutable object"? Можно ссылку на упоминание его в спецификации?
Хорошо, пусть будет объект, инициализированный значением этого литерала. Но i — это не объект. Это идентификатор.
S>>И i — это не имя объекта. Это его идентификатор в терминах OOP.
I>А употребленное тобой "имя переменной" это в терминах чего было?
Хорошо, пусть будет "идентификатор".
Здравствуйте, igna, Вы писали:
L>>Да, тип Int32 — неизменяемый. Отсутствие/наличие const тут погоды не делает, т.к. этот модификатор относится не к типу, а к переменной.
I>К объекту то есть (по крайней мере в C или C++, на котором пример, i является объектом).
Нет, именно к переменной.
I>И вот определение из Википедии:
I>
I>an immutable object is an object whose state cannot be modified after it is created
Объектом тут является значение 123, и да, оно неизменяемое.
Здравствуйте, igna, Вы писали:
I>Здравствуйте, Lloyd, Вы писали:
L>>Да, тип Int32 — неизменяемый. Отсутствие/наличие const тут погоды не делает, т.к. этот модификатор относится не к типу, а к переменной.
I>К объекту то есть (по крайней мере в C или C++, на котором пример, i является объектом). И вот определение из Википедии:
I>
I>an immutable object is an object whose state cannot be modified after it is created
Здравствуйте, igna, Вы писали:
S>>Идентификатор i никак не является объектом.
I>Вот прям никак. А samius чем является, человеком или его псевдонимом на rsdn.ru?
Здравствуйте, igna, Вы писали:
I>Здравствуйте, samius, Вы писали:
S>>Идентификатор i никак не является объектом.
I>Вот прям никак. А samius чем является, человеком или его псевдонимом на rsdn.ru?
Формально, samius это вывеска, под которой на rsdn пишет человек (я). И она не иммутабельна. Под ней технически может писать другой человек.
То что кто-то с samius-ом ассоциирует человека — это какая-то ошибка. То же касается почтовых адресов, учетных записей ICQ, и даже СНИЛС.
I>Тут произведена подмена понятия "называющий" на "указывающий".
Это не подмена, это аналогия.
I>Кроме того, обрати внимание, что "Луна" в твоем предложении все-таки небесное тело, а не его имя, покольку палец твой все-таки не на имя указывает.
Да, именно это там и написано.
I>То есть демагогия эта твоя цитата.