Size: a a a

F# Flood: кибербабулинг башкиров

2020 September 24

VS

Vladimir Shchur in F# Flood: кибербабулинг башкиров
и вот из практики - наследование рекордов идеально подошло бы для пульсара, там типы месседжей друг от друга наследуются на джаве, но там сравнение ровно наоборот нужно - чтобы наследники друг другу равнялись если сравниваются через базовый тип
источник

IC

Ilya L Che in F# Flood: кибербабулинг башкиров
Да, вот эту хрень надо объявить, чтобы заработало.
источник

AH

Ayrat Hudaygulov in F# Flood: кибербабулинг башкиров
Vladimir Shchur
и вот из практики - наследование рекордов идеально подошло бы для пульсара, там типы месседжей друг от друга наследуются на джаве, но там сравнение ровно наоборот нужно - чтобы наследники друг другу равнялись если сравниваются через базовый тип
не, сравнение наследников сломало бы всё нахер
источник

AH

Ayrat Hudaygulov in F# Flood: кибербабулинг башкиров
так что они правильно костыльнули, но всё же дичь
источник

AH

Ayrat Hudaygulov in F# Flood: кибербабулинг башкиров
мы это уже обсуждали тут
источник

IC

Ilya L Che in F# Flood: кибербабулинг башкиров
источник

VS

Vladimir Shchur in F# Flood: кибербабулинг башкиров
ну смотри, у меня есть класс, в котором сложен массив базовых рекордов и я их друг с другом сравниваю не имея представления какой именно наследник там сидит, если они не будут друг другу равны, то все сломается
источник

AH

Ayrat Hudaygulov in F# Flood: кибербабулинг башкиров
record Point(int x, int y)
record PointWithColor(c: Color): Point

void ArePointsEqual(Point p1, Point p2) =>
 p1 == p2

ArePointsEqual(Point(1,1), PointWithColor(1,1,Color.Red)) // ну вроде должно быть true
ArePointsEqual(Point(1,1), PointWithColor(1,1,Color.Blue)) // ну вроде должно быть true

откуда следует что и это тоже должно быть true
ArePointsEqual(PointWithColor(1,1,Color.Blue), PointWithColor(1,1,Color.Red))
источник

AH

Ayrat Hudaygulov in F# Flood: кибербабулинг башкиров
ну я псевдокод накидал, думаю мысль понятна
источник

AH

Ayrat Hudaygulov in F# Flood: кибербабулинг башкиров
короче, это ворота в ад - еквалити семантика и наследование
источник

RM

Roman Melnikov in F# Flood: кибербабулинг башкиров
источник

VS

Vladimir Shchur in F# Flood: кибербабулинг башкиров
Ayrat Hudaygulov
record Point(int x, int y)
record PointWithColor(c: Color): Point

void ArePointsEqual(Point p1, Point p2) =>
 p1 == p2

ArePointsEqual(Point(1,1), PointWithColor(1,1,Color.Red)) // ну вроде должно быть true
ArePointsEqual(Point(1,1), PointWithColor(1,1,Color.Blue)) // ну вроде должно быть true

откуда следует что и это тоже должно быть true
ArePointsEqual(PointWithColor(1,1,Color.Blue), PointWithColor(1,1,Color.Red))
и действительно должно быть тру, если предварительно скастить к родителю)
источник

AH

Ayrat Hudaygulov in F# Flood: кибербабулинг башкиров
ну они кастятся при передаче в метод же
источник

AH

Ayrat Hudaygulov in F# Flood: кибербабулинг башкиров
ну и далее следует ещё один мазок говнокода и вопросов на собесе с имплицитными кастами при сравнении
источник

IC

Ilya L Che in F# Flood: кибербабулинг башкиров
(продолжаю считать, что не должно) Меня при сравнении рантайм типы интересуют, а не к чему их там в коде кастят.
источник

AH

Ayrat Hudaygulov in F# Flood: кибербабулинг башкиров
типа

PointWithColor == Point

какой еквалити вызовется?
источник

AH

Ayrat Hudaygulov in F# Flood: кибербабулинг башкиров
и опять тупые вопросы
источник

VS

Vladimir Shchur in F# Flood: кибербабулинг башкиров
Переслано от Petr
Думаю это хуйня
источник

AH

Ayrat Hudaygulov in F# Flood: кибербабулинг башкиров
а если там граф наследования неочевидный, так вообще интересно начинается
источник

IC

Ilya L Che in F# Flood: кибербабулинг башкиров
Ayrat Hudaygulov
типа

PointWithColor == Point

какой еквалити вызовется?
Так тут рекорды не при чём. И сейчас такие вопросы задавать можно.
источник