Size: a a a

Язык программирования Julia / Julia programming language

2021 January 15

ИЦ

Игорь Цалко... in Язык программирования Julia / Julia programming language
Может потому, что это разные объекты в памяти?
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Надо руками Base.:(==) определять.
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Игорь Цалко
Может потому, что это разные объекты в памяти?
+1
источник

P

PS in Язык программирования Julia / Julia programming language
а разве не === тестирует разные объекты?
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
=== сравнивает указатели на объекты, ==  сравнивает сами объекты.
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
В данном случае и то и другое выдаст false
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Но можно переопределить ==, чтобы он поля сравнивал и тогда указатели будут разные, а объекты одинаковые.
источник

VZ

Vadim Z in Язык программирования Julia / Julia programming language
Не mutable даёт true
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Да, в этом случае компилятор знает, что объект никогда не изменится и всегда выделяет одну и ту же память.
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Наверное 😊
источник

KT

Kirill Tsaregorodtse... in Язык программирования Julia / Julia programming language
Надо использовать AutoHashEquals
источник

VZ

Vadim Z in Язык программирования Julia / Julia programming language
Да, логично. Спасибо!!!
источник

KT

Kirill Tsaregorodtse... in Язык программирования Julia / Julia programming language
источник

KT

Kirill Tsaregorodtse... in Язык программирования Julia / Julia programming language
Если руками лень писать )
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
struct Foo
   a::Int
   b::Int
end

x1 = Foo(1, 1)
x2 = Foo(1, 1)
@edit x1 == x2

==(x, y) = x === y
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
То есть по умолчанию сравнение всегда идёт по указателям.
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
И как было правильно замечено, разные объекты создаются.
источник

VG

Viktor G. in Язык программирования Julia / Julia programming language
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
А кто помнит, как указатель на объект получить?
источник

VG

Viktor G. in Язык программирования Julia / Julia programming language
ну и соответственно
источник