Skip to content

Update translated word for the "print" word in Thai language #3026

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Oct 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions _th/cheatsheets/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,9 @@ language: "th"
| `for (i <- 1 until 5) {`<br> `println(i)`<br>`}` | ทำความเข้าใจ for : ทำซ้ำโดยละเว้นขอบเขตบน |
| <span id="pattern_matching" class="h2">จับคู่รูปแบบ</span> | |
| <span class="label success">Good</span><br> `(xs zip ys) map { case (x,y) => x*y }`<br> <span class="label important">Bad</span><br> `(xs zip ys) map( (x,y) => x*y )` | ใช้ case ใน arg ของฟังก์ชันสำหรับ จับคู่รูปแบบ (pattern maching) |
| <span class="label important">Bad</span><br>`val v42 = 42`<br>`Some(3) match {`<br>` case Some(v42) => println("42")`<br>` case _ => println("Not 42")`<br>`}` | "v42" ถูกตีความว่าเป็นชื่อที่ตรงกับค่า Int และพิมพ์ "42" |
| <span class="label success">Good</span><br>`val v42 = 42`<br>`Some(3) match {`<br>`` case Some(`v42`) => println("42")``<br>`case _ => println("Not 42")`<br>`}` | "v42" กับ backticks ถูกตีความว่าเป็น v42 val ที่มีอยู่และ<br>พิมพ์ "Not 42" |
| <span class="label success">Good</span><br>`val UppercaseVal = 42`<br>`Some(3) match {`<br>` case Some(UppercaseVal) => println("42")`<br>` case _ => println("Not 42")`<br>`}` | UppercaseVal ถือว่าเป็น val ที่มีอยู่ไม่ใช่ตัวแปรรูปแบบใหม่<br> เพราะมันเริ่มต้นด้วยตัวอักษรตัวพิมพ์ใหญ่ ดังนั้นค่าที่มีอยู่ใน <br>UppercaseVal จะถูกตรวจสอบเทียบกับ 3 และพิมพ์ "Not 42" |
| <span class="label important">Bad</span><br>`val v42 = 42`<br>`Some(3) match {`<br>` case Some(v42) => println("42")`<br>` case _ => println("Not 42")`<br>`}` | "v42" ถูกตีความว่าเป็นชื่อที่ตรงกับค่า Int และแสดงค่า "42" |
| <span class="label success">Good</span><br>`val v42 = 42`<br>`Some(3) match {`<br>`` case Some(`v42`) => println("42")``<br>`case _ => println("Not 42")`<br>`}` | "v42" กับ backticks ถูกตีความว่าเป็น v42 val ที่มีอยู่และ<br>แสดงค่า "Not 42" |
| <span class="label success">Good</span><br>`val UppercaseVal = 42`<br>`Some(3) match {`<br>` case Some(UppercaseVal) => println("42")`<br>` case _ => println("Not 42")`<br>`}` | UppercaseVal ถือว่าเป็น val ที่มีอยู่ไม่ใช่ตัวแปรรูปแบบใหม่<br> เพราะมันเริ่มต้นด้วยตัวอักษรตัวพิมพ์ใหญ่ ดังนั้นค่าที่มีอยู่ใน <br>UppercaseVal จะถูกตรวจสอบเทียบกับ 3 และแสดงค่า "Not 42" |
| <span id="object_orientation" class="h2">การใช้งาน object</span> | |
| `class C(x: R)` _เหมือนกับ_ <br>`class C(private val x: R)`<br>`var c = new C(4)` | ตัวสร้างพารามิเตอร์ - x มีเฉพาะในคลาส body เท่านั้น |
| `class C(val x: R)`<br>`var c = new C(4)`<br>`c.x` | ตัวสร้างพารามิเตอร์ - กำหนดสมาชิกสาธารณะโดยอัตโนมัติ |
Expand Down
20 changes: 10 additions & 10 deletions _th/tour/classes.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ next-page: traits
previous-page: unified-types
---

คลาสใน Scala เป็นพิมพ์เขียวสำหรับสร้าง object ในคลาสสามารถมี method, value, ตัวแปร, type, object,
คลาสใน Scala เป็นพิมพ์เขียวสำหรับสร้าง object ในคลาสสามารถมี method, value, ตัวแปร, type, object,
trait และคลาส ซึ่งเรียกรวมๆ กันว่า _members_ หรือ _สมาชิก_ ของคลาส type, object และ trait จะกล่าวถึงภายหลัง

## การกำหนดคลาส
Expand All @@ -22,7 +22,7 @@ class User

val user1 = new User
```
keyword `new` ใช้เพื่อสร้าง instance ของคลาส `User` มี constructor เริ่มต้นซึ่งไม่รับค่า argument เพราะว่าไม่ได้กำหนด constructor ไว้ตอนประกาสคลาส
keyword `new` ใช้เพื่อสร้าง instance ของคลาส `User` มี constructor เริ่มต้นซึ่งไม่รับค่า argument เพราะว่าไม่ได้กำหนด constructor ไว้ตอนประกาสคลาส

อย่างไรก็ตาม, เราอาจจะมี constructor และ body ของคลาส
ตัวอย่างดังนี้ เป็นการประกาศคลาสสำหรับจุด (point):
Expand All @@ -41,11 +41,11 @@ class Point(var x: Int, var y: Int) {

val point1 = new Point(2, 3)
point1.x // 2
println(point1) // พิมพ์ (2, 3)
println(point1) // แสดงค่า (2, 3)
```

คลาส `Point` นี้มีสมาชิก 4 ตัว คือ ตัวแปร `x` และ `y` และ method `move` และ `toString`
ไม่เหมือนภาษาอื่นๆ, ซึ่ง constructor หลักจะอยู่ใน class signature `(var x: Int, var y: Int)`
ไม่เหมือนภาษาอื่นๆ, ซึ่ง constructor หลักจะอยู่ใน class signature `(var x: Int, var y: Int)`
method `move` รับ argument ชนิดตัวเลข 2 ตัว และ return เป็นค่า Unit `()` ซึ่งไม่มีค่า
จะมีผลลัพธ์คลายกับ `void` ในภาษาที่เหมือน Java, `toString` ในทางกลับกัน ไม่รับ argument ใดๆ แต่ return เป็นค่า `String` ซึ่งแทนที่ method `toString` จาก [`AnyRef`](unified-types.html) โดยจะมี keyword `override`

Expand All @@ -58,7 +58,7 @@ class Point(var x: Int = 0, var y: Int = 0)

val origin = new Point // x and y are both set to 0
val point1 = new Point(1)
println(point1.x) // พิมพ์ 1
println(point1.x) // แสดงค่า 1

```

Expand All @@ -68,13 +68,13 @@ println(point1.x) // พิมพ์ 1
```scala mdoc:nest
class Point(var x: Int = 0, var y: Int = 0)
val point2 = new Point(y=2)
println(point2.y) // พิมพ์ 2
println(point2.y) // แสดงค่า 2
```

นี้เป็นวิธีปฏิบัติที่ดีเพื่อจะทำให้โค้ดชัดเจนมากขึ้น

## Private Members และ Getter/Setter
สมาชิกของคลาสจะเป็น public โดยค่าเริ่มต้น ใช้ access modifier `private`
สมาชิกของคลาสจะเป็น public โดยค่าเริ่มต้น ใช้ access modifier `private`
เพื่อซ่อนสมาชิกนั้นจากภายนอกของคลาส
```scala mdoc:reset
class Point {
Expand All @@ -97,10 +97,10 @@ class Point {

val point1 = new Point
point1.x = 99
point1.y = 101 // พิมพ์คำเตือน warning
point1.y = 101 // แสดงค่า "WARNING: Out of bounds"
```
คลาส `Point` เวอร์ชันนี้ ข้อมูลจะถูกเก็บไว้ในตัวแปรชนิด private ที่ชื่อว่า `_x` และ `_y` และมี method ที่ชื่อว่า `def x` และ `def y` ทีจะใช้ในการเข้าถึงข้อมูล private เป็น getter, `def x_=` และ `def y=`
เป็น method สำหรับตรวจสอบข้อมูลและ setting ค่าของตัวแปร `_x` และ `_y`
คลาส `Point` เวอร์ชันนี้ ข้อมูลจะถูกเก็บไว้ในตัวแปรชนิด private ที่ชื่อว่า `_x` และ `_y` และมี method ที่ชื่อว่า `def x` และ `def y` ทีจะใช้ในการเข้าถึงข้อมูล private เป็น getter, `def x_=` และ `def y=`
เป็น method สำหรับตรวจสอบข้อมูลและ setting ค่าของตัวแปร `_x` และ `_y`
สังเกตว่า syntax พิเศษนี้สำหรับ setter: คือ method ที่ตามด้วย `_=` ไปยังตัวระบุของ setter และ parameter ตามหลังมา

constructor หลักกำหนด parameter ด้วย `val` และ `var` เป็น public อย่างไรก็ตามเพราะว่า `val` เป็นตัวแปรที่เปลี่ยนแปลงไม่ได้ (immutable) เราไม่สามารถเขียบแบบนี้ได้
Expand Down
4 changes: 2 additions & 2 deletions _th/tour/traits.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ val cat = new Cat("Sally")
val animals = ArrayBuffer.empty[Pet]
animals.append(dog)
animals.append(cat)
animals.foreach(pet => println(pet.name)) // พิมพ์ Harry Sally
animals.foreach(pet => println(pet.name)) // แสดงค่า Harry Sally
```
`trait Pet` มี abstract field `name` ซึ่ง implement โดย Cat และ Dog ใน constructor ของมัน
`trait Pet` มี abstract field `name` ซึ่ง implement โดย Cat และ Dog ใน constructor ของมัน
ในบรรทัดสุดท้าย เราเรียก `pet.name` ซึ่งจะต้องถูก implement แล้วใน subtype ใดๆ ของ trait `Pet`