Skip to content

Commit 94b1484

Browse files
author
Otts Aleksey Sergeevich
committed
Задания для лекции 8
1 parent 0323438 commit 94b1484

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

build.sbt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,6 @@ val lecture5 = project.in(file("./lecture5")).settings(commonSettings)
3535

3636
val 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)
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
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 для любого типа, реализованный через оператор `==`

0 commit comments

Comments
 (0)