File tree Expand file tree Collapse file tree 2 files changed +13
-1
lines changed Expand file tree Collapse file tree 2 files changed +13
-1
lines changed Original file line number Diff line number Diff line change 233233 mutex_m (0.2.0 )
234234 net-http (0.4.1 )
235235 uri
236+ nokogiri (1.16.5-aarch64-linux )
237+ racc (~> 1.4 )
236238 nokogiri (1.16.5-arm64-darwin )
237239 racc (~> 1.4 )
238240 nokogiri (1.16.5-x64-mingw-ucrt )
285287 zeitwerk (2.6.7 )
286288
287289PLATFORMS
290+ aarch64-linux
288291 arm64-darwin-22
289292 arm64-darwin-23
290293 x64-mingw-ucrt
Original file line number Diff line number Diff line change @@ -15,12 +15,15 @@ Trait ใช้เพื่อแชร์ interface และ field ระห
1515คลาส และ object สามารถขยาย trait ได้แต่ trait ไม่สามารถ instant เป็น object และไม่สามารถมี parameter ได้
1616
1717## การกำหนด trait
18+
1819วิธีที่ง่ายที่สุดในการกำหนด trait คือการประกาศด้วย keyword ` trait ` และ indentifier:
1920
2021``` scala mdoc
2122trait HairColor
2223```
24+
2325trait จะมีประโยชน์อย่างยิ่งด้วยการเป็น generic type และเป็น abstract method
26+
2427``` scala mdoc
2528trait Iterator [A ] {
2629 def hasNext : Boolean
@@ -31,7 +34,9 @@ trait Iterator[A] {
3134การขยาย ` trait Iterator[A] ` ต้องการ type ` A ` และ implementation ของ method ` hasNext ` และ ` next `
3235
3336## การใช้ traits
37+
3438ใช้ keyword ` extends ` เพื่อขยาย trait ดังนั้นจะ implement abstract member ใดๆ ของ trait โดยใช้ keyword ` override ` :
39+
3540``` scala mdoc:nest
3641trait Iterator [A ] {
3742 def hasNext : Boolean
@@ -55,10 +60,13 @@ val iterator = new IntIterator(10)
5560iterator.next() // returns 0
5661iterator.next() // returns 1
5762```
63+
5864คลาส ` IntIterator ` นี้รับค่า parameter ` to ` เป็น upper bound มัน ` extends Iterator[Int] ` ซึ่งหมายความว่า method ` next ` จะต้อง return เป็น Int
5965
6066## Subtyping
67+
6168ในเมื่อ trait ที่ให้มานั้น required, subtype ของ trait สามารถถูกใช้แทนที่ได้
69+
6270``` scala mdoc
6371import scala .collection .mutable .ArrayBuffer
6472
@@ -77,5 +85,6 @@ animals.append(dog)
7785animals.append(cat)
7886animals.foreach(pet => println(pet.name)) // พิมพ์ Harry Sally
7987```
80- ` trait Pet ` มี abstract field ` name ` ซึ่ง implement โดย Cat และ Dog ใน constructor ของมัน
88+
89+ ` trait Pet ` มี abstract field ` name ` ซึ่ง implement โดย Cat และ Dog ใน constructor ของมัน
8190ในบรรทัดสุดท้าย เราเรียก ` pet.name ` ซึ่งจะต้องถูก implement แล้วใน subtype ใดๆ ของ trait ` Pet `
You can’t perform that action at this time.
0 commit comments