Skip to content

Commit 08a6e90

Browse files
committed
Trait Parameters番外編
1 parent d39c75b commit 08a6e90

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package com.github.shinharad.gettingStartedWithScala3
2+
package traitParametersPart2
3+
4+
import scala.util.chaining.*
5+
6+
//---
7+
// 番外編
8+
9+
trait Greeting(val name: String):
10+
def msg = s"How are you, $name"
11+
12+
trait FormalGreeting extends Greeting:
13+
override def msg = s"How do you do, $name"
14+
15+
// コンパイルエラー
16+
// class A extends FormalGreeting
17+
18+
class B extends Greeting("Bob"), FormalGreeting
19+
class C extends FormalGreeting, Greeting("Bob")
20+
21+
// コンパイルエラー
22+
// trait FormalGreeting2(val name: String) extends Greeting:
23+
// def msg = s"How do you do, $name"
24+
25+
trait FormalGreeting3(override val name: String) extends Greeting:
26+
override def msg = s"How do you do, $name"
27+
28+
class D extends FormalGreeting3("Bill"), Greeting("Bob")
29+
class E extends Greeting("Bob"), FormalGreeting3("Bill")
30+
31+
// コンパイルエラー
32+
// class F extends FormalGreeting3("Bill")
33+
// class G extends FormalGreeting3, Greeting("Bob")
34+
35+
// コンパイルエラー
36+
// trait FormalGreeting4(override val name: String) extends Greeting(name):
37+
// override def msg = s"How do you do, $name"
38+
39+
@main def no1(): Unit =
40+
println("-" * 50)
41+
42+
(new B).msg.tap(println)
43+
(new C).msg.tap(println)
44+
// => How do you do, Bob
45+
46+
println("-" * 10)
47+
48+
(new D).msg.tap(println)
49+
(new E).msg.tap(println)
50+
// => How do you do, Bill
51+
52+
println("-" * 50)

0 commit comments

Comments
 (0)