File tree Expand file tree Collapse file tree 2 files changed +28
-1
lines changed
lecture8/src/main/scala/lectures/l8 Expand file tree Collapse file tree 2 files changed +28
-1
lines changed Original file line number Diff line number Diff line change @@ -35,4 +35,6 @@ val lecture5 = project.in(file("./lecture5")).settings(commonSettings)
3535
3636val lecture6 = project.in(file(" ./lecture6" )).settings(commonSettings)
3737
38- val lecture7 = project.in(file(" ./lecture7" )).settings(commonSettings)
38+ val lecture7 = project.in(file(" ./lecture7" )).settings(commonSettings)
39+
40+ val lecture8 = project.in(file(" ./lecture8" )).settings(commonSettings)
Original file line number Diff line number Diff line change 1+ В scala есть такая особенность, что оператор сравнения позволяет сравнивать разные типы.
2+ Например вы можете написать такой код:
3+ ``` scala
4+ Option (1 ) == " 1"
5+ ```
6+ И максимум, что мы получим - это предупреждение от компилятора.
7+ Вам нужно написать свой type class под название ` Eq[A] ` ,
8+ для которого будет определена операция ` def eq(a1: A, a2: A): Boolean `
9+ А также синтаксис, который позволит писать так:
10+ ``` scala
11+ Option (1 ) === Option (1 )
12+ " str" !== " str1"
13+ true == false
14+ ```
15+
16+ И при этом не давать компилироваться следующему коду:
17+ ``` scala
18+ Option (1 ) === Option (" 1" )
19+ " str" !== false
20+ ```
21+
22+ Должны быть определены экземпляры для вывода:
23+ ` Option[A] ` , ` Map[String, A] ` , ` Seq[A] `
24+
25+ А также дефолтный Eq для любого типа, реализованный через оператор ` == `
You can’t perform that action at this time.
0 commit comments