Skip to content

Commit d527b97

Browse files
committed
add /th/tour/named-arguments page
1 parent 039a32b commit d527b97

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed

_th/tour/named-arguments.md

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,55 @@ language: th
1010
next-page: packages-and-imports
1111
previous-page: default-parameter-values
1212
---
13+
14+
เมื่อเราเรียกใช้ method แล้วเราสามารถระบุชื่อ argument (label the argument) สำหรับ parameter ใดๆ ได้ดังนี้:
15+
16+
{% tabs named-arguments-when-good %}
17+
18+
{% tab 'Scala 2 and 3' for=named-arguments-when-good %}
19+
20+
```scala mdoc
21+
def printName(first: String, last: String): Unit =
22+
println(s"$first $last")
23+
24+
printName("John", "Public") // แสดงค่า "John Public"
25+
printName(first = "John", last = "Public") // แสดงค่า "John Public"
26+
printName(last = "Public", first = "John") // แสดงค่า "John Public"
27+
printName("Elton", last = "John") // แสดงค่า "Elton John"
28+
```
29+
30+
{% endtab %}
31+
32+
{% endtabs %}
33+
34+
named argument นั้นมีประโยชน์เมื่อ parameter 2 ตัวมี type เดียวกัน\
35+
ทำให้ argument ที่เราส่งไปให้ function อาจถูกสลับกันโดยไม่ได้ตั้งใจ
36+
37+
สังเกตว่าเราจะเขียน argument ที่ระบุชื่อในลำดับใดก็ได้\
38+
แต่ถ้า argument ไม่ได้อยู่ในลำดับของ parameter ใน function จากซ้ายไปขวา แล้ว argument ที่เหลือจะต้องระบุชื่อทั้งหมด
39+
40+
ในตัวอย่างข้างล่างนี้ named argument ทำให้เราสามารถเว้น parameter `middle` ได้\
41+
แต่ในกรณีที่เกิด error เนื่องจาก argument ตัวแรกอยู่นอกลำดับของ parameter (ตัวแรกไม่ใช่ parameter `first`)\
42+
ดังนั้น เราจะต้องระบุชื่อ argument ตั้งแต่ตัวที่ 2 เป็นต้นไป
43+
44+
{% tabs named-arguments-when-error %}
45+
46+
{% tab 'Scala 2 and 3' for=named-arguments-when-error %}
47+
48+
```scala mdoc:fail
49+
def printFullName(first: String, middle: String = "Q.", last: String): Unit =
50+
println(s"$first $middle $last")
51+
52+
printFullName(first = "John", last = "Public") // แสดงค่า "John Q. Public"
53+
printFullName("John", last = "Public") // แสดงค่า "John Q. Public"
54+
printFullName("John", middle = "Quincy", "Public") // แสดงค่า "John Quincy Public"
55+
printFullName(last = "Public", first = "John") // แสดงค่า "John Q. Public"
56+
printFullName(last = "Public", "John") // error: positional after named argument
57+
```
58+
59+
{% endtab %}
60+
61+
{% endtabs %}
62+
63+
เราสามารถใช้ Named Argument กับการเรียกใช้ method ของ Java ได้\
64+
แต่ทำได้เฉพาะในกรณีที่ Java library นั้นถูกคอมไพล์ด้วยออพชั่น `-parameters` เท่านั้น

0 commit comments

Comments
 (0)