เอล์ม - ทูเปิลส์

ในบางครั้งอาจจำเป็นต้องจัดเก็บคอลเล็กชันของค่าประเภทต่างๆ Elm ทำให้เรามีโครงสร้างข้อมูลที่เรียกว่า tuple ที่ทำหน้าที่นี้

ทูเปิลแสดงถึงคอลเล็กชันค่าที่แตกต่างกัน กล่าวอีกนัยหนึ่ง tuples เปิดใช้งานการจัดเก็บหลายเขตข้อมูลประเภทต่างๆ ทูเปิลเก็บค่าจำนวนคงที่ Tuples มีประโยชน์เมื่อคุณต้องการส่งคืนค่าหลายค่าประเภทต่างๆจากฟังก์ชัน โครงสร้างข้อมูลเหล่านี้ไม่เปลี่ยนรูปเหมือนชนิดอื่น ๆ ใน elm

ไวยากรณ์

(data1,data2)

ตัวอย่างง่ายๆแสดงไว้ด้านล่าง -

> ("TuotrialsPoint",5,True,"Hyderabad")
("TuotrialsPoint",5,True,"Hyderabad") : ( String, number, Bool, String )

ในส่วนต่อไปเราจะเรียนรู้เกี่ยวกับการดำเนินการทูเพิลต่างๆ

อันดับแรก

การดำเนินการนี้แยกค่าแรกออกจากทูเปิล

ไวยากรณ์

Tuple.first tuple_name
> Tuple.first
<function> : ( a1, a2 ) -> a1

ภาพประกอบ

> Tuple.first (10,"hello")
10 : number

วินาที

second การดำเนินการทูเพิลดึงค่าที่สองออกจากทูเปิล

ไวยากรณ์

Tuple.second tuple_name
> Tuple.second
<function> : ( a1, a2 ) -> a2

ภาพประกอบ

> Tuple.second (10,"hello")
"hello" : String

รายชื่อ tuples

รายการสามารถจัดเก็บ Tuples หากใช้ tuples ภายในรายการตรวจสอบให้แน่ใจว่าสิ่งเหล่านี้ทั้งหมดเป็นประเภทข้อมูลเดียวกันและมีพารามิเตอร์จำนวนเท่ากัน

ภาพประกอบ

> [("hello",20),("world",30)]
[("hello",20),("world",30)] : List ( String, number )

Tuple พร้อมฟังก์ชั่น

ฟังก์ชันสามารถส่งคืนสิ่งที่มีค่า นอกจากนี้ tuples สามารถส่งผ่านเป็นพารามิเตอร์ไปยังฟังก์ชันได้

ภาพประกอบ 1

ตัวอย่างต่อไปนี้กำหนดฟังก์ชัน fn_checkEven ฟังก์ชันนี้ยอมรับค่าจำนวนเต็มเป็นพารามิเตอร์และส่งคืนทูเพิล

> fn_checkEven no = \
   if no%2 == 0 then \
      (True,"The no is Even")\
   else \
      (False,"No is not even")
<function> : Int -> ( Bool, String )
> fn_checkEven 10
(True,"The no is Even") : ( Bool, String )
> fn_checkEven 11
(False,"No is not even") : ( Bool, String )
>

ภาพประกอบ 2

ต่อไปนี้ส่งทูเพิลเป็นพารามิเตอร์ไปยังฟังก์ชัน

> fn_add (a,b) = \
| a+b
<function> : ( number, number ) -> number
> fn_add (10,20)
30 : number

ฟังก์ชันfn_addรับทูเปิลที่มีค่าตัวเลข 2 ค่าและส่งกลับผลรวม

การทำลายล้าง

การทำลายโครงสร้างเกี่ยวข้องกับการทำลายทูเพิลให้เป็นค่านิยม ในการเข้าถึงค่าแต่ละค่าในทูเปิลที่มีองค์ประกอบสามอย่างขึ้นไปเราใช้การทำลายโครงสร้าง ที่นี่เรากำหนดแต่ละค่าในทูเพิลให้กับตัวแปรต่างๆ การใช้ _ one สามารถกำหนดตัวยึดตำแหน่งสำหรับค่าที่จะถูกละเว้นหรือข้ามไป

ภาพประกอบ

> (first,_,_) = (10,20,30)
10 : number
> first
10 : number

ภาพประกอบ

ในตัวอย่างนี้เราจะใช้ let..in block syntax เพื่อทำลายโครงสร้าง บล็อก let มีตัวแปรและในบล็อกมีนิพจน์ที่ควรได้รับการประเมินและค่าที่ควรส่งคืน

> t1 = (10,20,30)
(10,20,30) : ( number, number1, number2 )
> let \
(a,b,c) = t1 \
in\
a + b +c
60 : number

เรากำลังประกาศตัวแปร abc ใน let clause และเข้าถึงโดยใช้ใน clause