Сообщение Re[4]: и ещё про рекорды.. от 15.09.2020 18:46
Изменено 15.09.2020 18:54 MadHuman
Re[4]: и ещё про рекорды..
Здравствуйте, _FRED_, Вы писали:
_FR>Так они и равны![](/Forum/Images/wink.gif)
спасибо за ссылку, интересная тулса!![](/Forum/Images/smile.gif)
_FR>
ну тут немного не тот кэйс о котором я исходно имел ввиду. тут на уровне конструктора рекорда порядок меняем.
_FR>И какой смысл вы вкладываете в сравнение точки по координатами (5, 7) и, например, вектора с этими же координатами? И, главное, откуда и зачем это знать разработчикам компилятора?![](/Forum/Images/no.gif)
хороший вопрос ) в такой постановке действительно смысла мало.
но к примеру в F# мы можем
то есть смысл в том, что дефенишн типа определяет его структуру. и при одинаковой структуре и одинаковых значений компонентов структуры композитные значения равны.
но понятно, по сути можно считать что у каждого рекорда есть неявное поле типа Type, и за счет него даже структурно одинакоко задефайненные рекорды всё равно будут отличаться.
спасибо за хороший наводящий вопрос![](/Forum/Images/smile.gif)
_FR>Так они и равны
![](/Forum/Images/wink.gif)
спасибо за ссылку, интересная тулса!
![](/Forum/Images/smile.gif)
_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) и, например, вектора с этими же координатами? И, главное, откуда и зачем это знать разработчикам компилятора?
![](/Forum/Images/no.gif)
хороший вопрос ) в такой постановке действительно смысла мало.
но к примеру в F# мы можем
type Point = int * int
type Vector = int * int
let p = 1,1
let v = 1,1
let comp = v = p //это даст тру
то есть смысл в том, что дефенишн типа определяет его структуру. и при одинаковой структуре и одинаковых значений компонентов структуры композитные значения равны.
но понятно, по сути можно считать что у каждого рекорда есть неявное поле типа Type, и за счет него даже структурно одинакоко задефайненные рекорды всё равно будут отличаться.
спасибо за хороший наводящий вопрос
![](/Forum/Images/smile.gif)
Re[4]: и ещё про рекорды..
Здравствуйте, _FRED_, Вы писали:
_FR>Так они и равны![](/Forum/Images/wink.gif)
спасибо за ссылку, интересная тулса!![](/Forum/Images/smile.gif)
_FR>
ну тут немного не тот кэйс о котором я исходно имел ввиду. тут на уровне конструктора рекорда порядок меняем.
_FR>И какой смысл вы вкладываете в сравнение точки по координатами (5, 7) и, например, вектора с этими же координатами? И, главное, откуда и зачем это знать разработчикам компилятора?![](/Forum/Images/no.gif)
хороший вопрос ) в такой постановке действительно смысла мало.
но к примеру в F# мы можем
то есть смысл в том, что дефенишн типа определяет его структуру. и при одинаковой структуре и одинаковых значений компонентов структуры композитные значения равны.
но понятно, по сути можно считать что у каждого рекорда есть неявное поле типа Type, и за счет него даже структурно одинакоко задефайненные рекорды всё равно будут отличаться.
спасибо за хороший наводящий вопрос![](/Forum/Images/smile.gif)
или ещё кейс когда уместно, допустим что можно создавать анонимные рекорды (щас наверно пока нельзя, но думаю к этому вопросу подойдут).
и вот тогда логично ожидать что в 2х местах структурно идентичные рекорды, но с разным порядком дефайнинга полей, должны быть равны.
_FR>Так они и равны
![](/Forum/Images/wink.gif)
спасибо за ссылку, интересная тулса!
![](/Forum/Images/smile.gif)
_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) и, например, вектора с этими же координатами? И, главное, откуда и зачем это знать разработчикам компилятора?
![](/Forum/Images/no.gif)
хороший вопрос ) в такой постановке действительно смысла мало.
но к примеру в F# мы можем
type Point = int * int
type Vector = int * int
let p = 1,1
let v = 1,1
let comp = v = p //это даст тру
то есть смысл в том, что дефенишн типа определяет его структуру. и при одинаковой структуре и одинаковых значений компонентов структуры композитные значения равны.
но понятно, по сути можно считать что у каждого рекорда есть неявное поле типа Type, и за счет него даже структурно одинакоко задефайненные рекорды всё равно будут отличаться.
спасибо за хороший наводящий вопрос
![](/Forum/Images/smile.gif)
или ещё кейс когда уместно, допустим что можно создавать анонимные рекорды (щас наверно пока нельзя, но думаю к этому вопросу подойдут).
и вот тогда логично ожидать что в 2х местах структурно идентичные рекорды, но с разным порядком дефайнинга полей, должны быть равны.