Информация об изменениях

Сообщение Re[4]: и ещё про рекорды.. от 15.09.2020 18:46

Изменено 15.09.2020 18:54 MadHuman

Re[4]: и ещё про рекорды..
Здравствуйте, _FRED_, Вы писали:

_FR>Так они и равны

спасибо за ссылку, интересная тулса!

_FR>
_FR>var point1 = new Point(X: 5, Y: 7);
_FR>var point2 = new Point(Y: 7, X: 5);
_FR>var compare = point1 == point2;
_FR>

ну тут немного не тот кэйс о котором я исходно имел ввиду. тут на уровне конструктора рекорда порядок меняем.

_FR>И какой смысл вы вкладываете в сравнение точки по координатами (5, 7) и, например, вектора с этими же координатами? И, главное, откуда и зачем это знать разработчикам компилятора?

хороший вопрос ) в такой постановке действительно смысла мало.
но к примеру в F# мы можем
type Point = int * int
type Vector = int * int

let p = 1,1
let v = 1,1
let comp = v = p  //это даст тру

то есть смысл в том, что дефенишн типа определяет его структуру. и при одинаковой структуре и одинаковых значений компонентов структуры композитные значения равны.
но понятно, по сути можно считать что у каждого рекорда есть неявное поле типа Type, и за счет него даже структурно одинакоко задефайненные рекорды всё равно будут отличаться.
спасибо за хороший наводящий вопрос
Re[4]: и ещё про рекорды..
Здравствуйте, _FRED_, Вы писали:

_FR>Так они и равны

спасибо за ссылку, интересная тулса!

_FR>
_FR>var point1 = new Point(X: 5, Y: 7);
_FR>var point2 = new Point(Y: 7, X: 5);
_FR>var compare = point1 == point2;
_FR>

ну тут немного не тот кэйс о котором я исходно имел ввиду. тут на уровне конструктора рекорда порядок меняем.

_FR>И какой смысл вы вкладываете в сравнение точки по координатами (5, 7) и, например, вектора с этими же координатами? И, главное, откуда и зачем это знать разработчикам компилятора?

хороший вопрос ) в такой постановке действительно смысла мало.
но к примеру в F# мы можем
type Point = int * int
type Vector = int * int

let p = 1,1
let v = 1,1
let comp = v = p  //это даст тру

то есть смысл в том, что дефенишн типа определяет его структуру. и при одинаковой структуре и одинаковых значений компонентов структуры композитные значения равны.
но понятно, по сути можно считать что у каждого рекорда есть неявное поле типа Type, и за счет него даже структурно одинакоко задефайненные рекорды всё равно будут отличаться.
спасибо за хороший наводящий вопрос

или ещё кейс когда уместно, допустим что можно создавать анонимные рекорды (щас наверно пока нельзя, но думаю к этому вопросу подойдут).
и вот тогда логично ожидать что в 2х местах структурно идентичные рекорды, но с разным порядком дефайнинга полей, должны быть равны.