Skip to content

Commit 246c742

Browse files
fResultSethTisue
andauthored
Add content for /th/tour/named-arguments page (#3027)
Co-authored-by: Seth Tisue <[email protected]>
1 parent 18a1a93 commit 246c742

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed

Diff for: _th/tour/named-arguments.md

+53
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,56 @@ 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: positional after named argument`\
42+
เนื่องจาก argument ตัวแรกไม่ได้เรียงตามลำดับของ parameter (ตัวแรกไม่ใช่ parameter `first` และ argument ตัวที่ 2 เป็นต้นไปก็ไม่ได้ระบุชื่อด้วย)\
43+
ดังนั้น เราจะต้องระบุชื่อ argument ตั้งแต่ตัวที่ 2 เป็นต้นไป
44+
45+
{% tabs named-arguments-when-error %}
46+
47+
{% tab 'Scala 2 and 3' for=named-arguments-when-error %}
48+
49+
```scala mdoc:fail
50+
def printFullName(first: String, middle: String = "Q.", last: String): Unit =
51+
println(s"$first $middle $last")
52+
53+
printFullName(first = "John", last = "Public") // แสดงค่า "John Q. Public"
54+
printFullName("John", last = "Public") // แสดงค่า "John Q. Public"
55+
printFullName("John", middle = "Quincy", "Public") // แสดงค่า "John Quincy Public"
56+
printFullName(last = "Public", first = "John") // แสดงค่า "John Q. Public"
57+
printFullName(last = "Public", "John") // error: positional after named argument
58+
```
59+
60+
{% endtab %}
61+
62+
{% endtabs %}
63+
64+
เราสามารถใช้ Named Argument กับการเรียกใช้ method ของ Java ได้\
65+
แต่ทำได้เฉพาะในกรณีที่ Java library นั้นถูกคอมไพล์ด้วยออพชั่น `-parameters` เท่านั้น

0 commit comments

Comments
 (0)