@@ -6,12 +6,12 @@ import scala.util.chaining.*
6
6
// ---
7
7
// 実装例その1
8
8
9
- // - 以下は、Logarithms (対数)を抽象化したもので、実態は Double
10
- // - Double であるという事実は、Logarithms が定義しているスコープ内でのみ知られている
9
+ // - 以下は、Logarithm (対数)を抽象化したもので、実態は Double
10
+ // - Double であるという事実は、MyMath のスコープ内でのみ知られている
11
11
// - スコープ内では Logarithm は型エイリアスとして扱われるが、
12
12
// スコープ外からは opaque(不透明)なので、Logarithm は抽象型として見られ、
13
13
// 実態が Double であることを認識することはできない
14
- object Logarithms :
14
+ object MyMath :
15
15
16
16
// 必ず何らかのスコープ内で定義する
17
17
opaque type Logarithm = Double
@@ -30,10 +30,10 @@ object Logarithms:
30
30
def + (y : Logarithm ): Logarithm = Logarithm (math.exp(x) + math.exp(y))
31
31
def * (y : Logarithm ): Logarithm = x + y
32
32
33
- end Logarithms
33
+ end MyMath
34
34
35
35
@ main def no1 (): Unit =
36
- import Logarithms .Logarithm
36
+ import MyMath .Logarithm
37
37
38
38
println(" -" * 50 )
39
39
@@ -156,7 +156,7 @@ end Access
156
156
//
157
157
// Opaque Type Aliases は、class と一緒に使用することもできる
158
158
159
- class LogarithmsClass :
159
+ class MyMathClass :
160
160
161
161
opaque type Logarithm = Double
162
162
@@ -172,8 +172,8 @@ class LogarithmsClass:
172
172
173
173
// 異なるインスタンスの Opaque Type のメンバーは異なるものとして扱われる
174
174
175
- val l1 = new LogarithmsClass
176
- val l2 = new LogarithmsClass
175
+ val l1 = new MyMathClass
176
+ val l2 = new MyMathClass
177
177
val x = l1(1.5 )
178
178
val y = l1(2.6 )
179
179
val z = l2(3.1 )
0 commit comments