Immutable object
От: igna Россия  
Дата: 08.11.11 09:49
Оценка:
В статьях про "Immutable object" или про "Неизменяемый объект" в Википедии, во всех примерах речь идет о типах, все экземпляры которых неизменяемы, хотя согласно определениям данным в начале статей i в примере ниже является неизменяемым объектом:

int const i = 123;


Так ли это, можно ли назвать i здесь immutable?
Re: Immutable object
От: DorfDepp  
Дата: 08.11.11 09:53
Оценка:
Здравствуйте, igna, Вы писали:

I>Так ли это, можно ли назвать i здесь immutable?


Если его положить в обертку, т.е., внутрь класса, тогда он превратится в "Immutable object".

А так это просто одна переменная базового типа. Т.е., сказать-то можно, только слабовато будет, на "Immutable object" несколько не дотягивает.
Re: Immutable object
От: samius Япония http://sams-tricks.blogspot.com
Дата: 08.11.11 09:57
Оценка: 1 (1) +3
Здравствуйте, igna, Вы писали:

I>В статьях про "Immutable object" или про "Неизменяемый объект" в Википедии, во всех примерах речь идет о типах, все экземпляры которых неизменяемы, хотя согласно определениям данным в начале статей i в примере ниже является неизменяемым объектом:


I>
I>int const i = 123;
I>


I>Так ли это, можно ли назвать i здесь immutable?


В контексте "Immutable object" — нет. Immutable object здесь 123. А i — это имя переменной (пусть и immutable).
Re[2]: Immutable object
От: igna Россия  
Дата: 08.11.11 10:10
Оценка: -2 :))
Здравствуйте, samius, Вы писали:

S>Immutable object здесь 123.


Вот хрен, 123 здесь integer literal (значением которого инициализируется объект именуемый i).

На неважно, главно, что ты увидел определение неизменяемого объекта здесь:

int const i = 123;
Re[2]: Immutable object
От: igna Россия  
Дата: 08.11.11 10:13
Оценка:
Здравствуйте, DorfDepp, Вы писали:

DD>Если его положить в обертку, т.е., внутрь класса, тогда он превратится в "Immutable object".


Кто "он", объект именуемый i со значением 123, или объект класса-обертки?
Re[3]: Immutable object
От: samius Япония http://sams-tricks.blogspot.com
Дата: 08.11.11 10:15
Оценка:
Здравствуйте, igna, Вы писали:

I>Здравствуйте, samius, Вы писали:


S>>Immutable object здесь 123.


I>Вот хрен, 123 здесь integer literal (значением которого инициализируется объект именуемый i).

integer literal это понятие во-первых из конкретного языка, во-вторых понятие времени разбора грамматики. в рантайме нет такого "integer literal". И в терминах OOP тоже нет такого понятия.
И i — это не имя объекта. Это его идентификатор в терминах OOP.

I>На неважно, главно, что ты увидел определение неизменяемого объекта здесь:


I>
I>int const i = 123;
I>
Re[4]: Immutable object
От: igna Россия  
Дата: 08.11.11 11:55
Оценка:
Здравствуйте, samius, Вы писали:

S>integer literal это понятие во-первых из конкретного языка, во-вторых понятие времени разбора грамматики. в рантайме нет такого "integer literal". И в терминах OOP тоже нет такого понятия.


Во первых пример-то и был на конкретном языке, а не на ООПе; во-вторых "в рантайме" никакого 123 и нет, а есть объект инициализированный значением этого литерала.

S>И i — это не имя объекта. Это его идентификатор в терминах OOP.


А употребленное тобой "имя переменной" это в терминах чего было?
Re[3]: Immutable object
От: Lloyd Россия  
Дата: 08.11.11 12:06
Оценка: :)
Здравствуйте, igna, Вы писали:

I>Вот хрен, 123 здесь integer literal (значением которого инициализируется объект именуемый i).


I>На неважно, главно, что ты увидел определение неизменяемого объекта здесь:


I>
I>int const i = 123;
I>


А с чем тут
Автор: Lloyd
Дата: 04.11.11
вы не согласны?
Re: Immutable object
От: Lloyd Россия  
Дата: 08.11.11 12:12
Оценка: +4 -1 :)
Здравствуйте, igna, Вы писали:

I>Так ли это, можно ли назвать i здесь immutable?


Да, тип Int32 — неизменяемый. Отсутствие/наличие const тут погоды не делает, т.к. этот модификатор относится не к типу, а к переменной.
Re[4]: Immutable object
От: igna Россия  
Дата: 08.11.11 12:14
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>А с чем тут
Автор: Lloyd
Дата: 04.11.11
вы не согласны?


Скажи лучше, есть ли определение неизменяемого объекта здесь:

int const i = 123;
Re[2]: Immutable object
От: igna Россия  
Дата: 08.11.11 12:19
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Да, тип Int32 — неизменяемый. Отсутствие/наличие const тут погоды не делает, т.к. этот модификатор относится не к типу, а к переменной.


К объекту то есть (по крайней мере в C или C++, на котором пример, i является объектом). И вот определение из Википедии:

an immutable object is an object whose state cannot be modified after it is created

Re[5]: Immutable object
От: samius Япония http://sams-tricks.blogspot.com
Дата: 08.11.11 12:20
Оценка:
Здравствуйте, igna, Вы писали:

I>Здравствуйте, samius, Вы писали:


S>>integer literal это понятие во-первых из конкретного языка, во-вторых понятие времени разбора грамматики. в рантайме нет такого "integer literal". И в терминах OOP тоже нет такого понятия.


I>Во первых пример-то и был на конкретном языке, а не на ООПе; во-вторых "в рантайме" никакого 123 и нет, а есть объект инициализированный значением этого литерала.


А в конкретном языке есть понятие "Immutable object"? Можно ссылку на упоминание его в спецификации?
Хорошо, пусть будет объект, инициализированный значением этого литерала. Но i — это не объект. Это идентификатор.

S>>И i — это не имя объекта. Это его идентификатор в терминах OOP.


I>А употребленное тобой "имя переменной" это в терминах чего было?

Хорошо, пусть будет "идентификатор".
Re[3]: Immutable object
От: Lloyd Россия  
Дата: 08.11.11 12:21
Оценка:
Здравствуйте, 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, и да, оно неизменяемое.
Re[3]: Immutable object
От: samius Япония http://sams-tricks.blogspot.com
Дата: 08.11.11 12:22
Оценка:
Здравствуйте, 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

Идентификатор i никак не является объектом.
Re[4]: Immutable object
От: igna Россия  
Дата: 08.11.11 12:27
Оценка:
Здравствуйте, samius, Вы писали:

S>Идентификатор i никак не является объектом.


Вот прям никак. А samius чем является, человеком или его псевдонимом на rsdn.ru?
Re[5]: Immutable object
От: Lloyd Россия  
Дата: 08.11.11 12:30
Оценка: +1 -1 :)
Здравствуйте, igna, Вы писали:

S>>Идентификатор i никак не является объектом.


I>Вот прям никак. А samius чем является, человеком или его псевдонимом на rsdn.ru?


Палец указывающий на Луну, не есть Луна

Re[5]: Immutable object
От: samius Япония http://sams-tricks.blogspot.com
Дата: 08.11.11 12:37
Оценка:
Здравствуйте, igna, Вы писали:

I>Здравствуйте, samius, Вы писали:


S>>Идентификатор i никак не является объектом.


I>Вот прям никак. А samius чем является, человеком или его псевдонимом на rsdn.ru?

Формально, samius это вывеска, под которой на rsdn пишет человек (я). И она не иммутабельна. Под ней технически может писать другой человек.
То что кто-то с samius-ом ассоциирует человека — это какая-то ошибка. То же касается почтовых адресов, учетных записей ICQ, и даже СНИЛС.
Re[6]: Immutable object
От: igna Россия  
Дата: 08.11.11 12:40
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Палец указывающий на Луну, не есть Луна


Тут произведена подмена понятия "называющий" на "указывающий".

Кроме того, обрати внимание, что "Луна" в твоем предложении все-таки небесное тело, а не его имя, покольку палец твой все-таки не на имя указывает.

То есть демагогия эта твоя цитата.
Re[7]: Immutable object
От: Lloyd Россия  
Дата: 08.11.11 12:45
Оценка:
Здравствуйте, igna, Вы писали:

I>

L>>Палец указывающий на Луну, не есть Луна


I>Тут произведена подмена понятия "называющий" на "указывающий".


Это не подмена, это аналогия.

I>Кроме того, обрати внимание, что "Луна" в твоем предложении все-таки небесное тело, а не его имя, покольку палец твой все-таки не на имя указывает.


Да, именно это там и написано.

I>То есть демагогия эта твоя цитата.


Re[6]: Immutable object
От: igna Россия  
Дата: 08.11.11 12:51
Оценка:
Здравствуйте, samius, Вы писали:

S>Формально, samius это вывеска ...


Хорошо, формальная вывеска, ответь пожалуйста, какие из нижеприведенных идентификаторов i1, j1, i2 и j2 являются идентификаторами неизменяемых объектов?

int i1 = 123;
int const j1 = 123;


class Int {
    int const i_;
public:
    Int(int i) : i_(i) {}
};

Int i2 = 123;
Int const j2 = 123;
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.