Есть ли в Библиотеки Немерли интернирование объектов?
От: Аноним  
Дата: 04.05.14 10:41
Оценка:
Возможно мне понадобиться. Нечто вроде

[Intern]
[Record]
class ddd
{
 double a;
 double b;
 double c;
 double d;
}

def d=ddd(1,1,1,1);
def k=ddd(1,1,1,1)

ddd.ReferenceEquals(d, k)   // true


Как делать относительно понятно, вопрос, сделано ли?
Re: Есть ли в Библиотеки Немерли интернирование объектов?
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 04.05.14 10:54
Оценка:
Макрос StructuralEquality.
Ce n'est que pour vous dire ce que je vous dis.
Re[2]: Есть ли в Библиотеки Немерли интернирование объектов?
От: Аноним  
Дата: 04.05.14 11:11
Оценка:
Здравствуйте, Don Reba, Вы писали:

DR>Макрос StructuralEquality.


Разве он позволяет такое?
вроде у него нет хештаблицы хранения хеша объектов для быстрого нахождения одинаковых и возврата ссылки на существующий, если подобный объект есть.
Кроме того при изменении поля насколько я знаю он не создает копию объекта если объектов несколько.
Re[3]: Есть ли в Библиотеки Немерли интернирование объектов?
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 04.05.14 11:15
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Разве он позволяет такое?

А>вроде у него нет хештаблицы хранения хеша объектов для быстрого нахождения одинаковых и возврата ссылки на существующий, если подобный объект есть.
А>Кроме того при изменении поля насколько я знаю он не создает копию объекта если объектов несколько.

Да, действительно. Тогда не знаю.
Ce n'est que pour vous dire ce que je vous dis.
Re: Есть ли в Библиотеки Немерли интернирование объектов?
От: artelk  
Дата: 04.05.14 19:34
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Возможно мне понадобиться. Нечто вроде


А>[Intern]

А>[Record]
А>class ddd
А>{
А> double a;
А> double b;
А> double c;
А> double d;
А>}

А>def d=ddd(1,1,1,1);

А>def k=ddd(1,1,1,1)

А>ddd.ReferenceEquals(d, k) // true


А>Как делать относительно понятно, вопрос, сделано ли?


Помнится кто-то писал, что конструктор в Nemerle может возвращать левый инстанс. Если это так, то такой макрос сделать не сложно — мемоизация по набору параметров с харанением в статическом словаре (+решение проблем с многопоточностью, если нужно). Правда, память может неявно течь...
Re[2]: Есть ли в Библиотеки Немерли интернирование объектов?
От: _NN_ www.nemerleweb.com
Дата: 05.05.14 04:11
Оценка:
Здравствуйте, artelk, Вы писали:

A>Помнится кто-то писал, что конструктор в Nemerle может возвращать левый инстанс. Если это так, то такой макрос сделать не сложно — мемоизация по набору параметров с харанением в статическом словаре (+решение проблем с многопоточностью, если нужно). Правда, память может неявно течь...


Вы про это: Небольшой трюк
Автор: STDray
Дата: 11.12.12
?
Тут можно и макрос и просто статический метод применить.
Будет выглядеть как конструктор , но им не являться.

Сам конструктор ничего лишнего возвращать не может, как бы он ничего и не возвращает, все делает CLR.
Посему либо обычная фабрика Factory.Create(...) , либо небольшой трюк =)
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[3]: Есть ли в Библиотеки Немерли интернирование объектов?
От: artelk  
Дата: 05.05.14 10:36
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>Сам конструктор ничего лишнего возвращать не может, как бы он ничего и не возвращает, все делает CLR.

_NN>Посему либо обычная фабрика Factory.Create(...) , либо небольшой трюк =)

Похоже это заблуждение у меня с вот таких
Автор: nikov
Дата: 30.05.07
древних времен.
Re[4]: Есть ли в Библиотеки Немерли интернирование объектов?
От: _NN_ www.nemerleweb.com
Дата: 06.05.14 04:05
Оценка: 2 (1)
Здравствуйте, artelk, Вы писали:

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


_NN>>Сам конструктор ничего лишнего возвращать не может, как бы он ничего и не возвращает, все делает CLR.

_NN>>Посему либо обычная фабрика Factory.Create(...) , либо небольшой трюк =)

A>Похоже это заблуждение у меня с вот таких
Автор: nikov
Дата: 30.05.07
древних времен.


Есть такое для вариантов:

using System;
using System.Console;

variant A{|X}

module Program
{
  Main() : void
  {
    WriteLine(object.ReferenceEquals(A.X(), A.X()));
    _ = ReadLine();
  }
}

True
http://rsdn.nemerleweb.com
http://nemerleweb.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.