การเรียนรู้ตัวอย่างนิพจน์แลมบ์ดาใน Java
ที่มา:
สื่อ ในบทความนี้ เราจะดูนิพจน์แลมบ์ดา ซึ่งเป็นพื้นฐานของการเขียนโปรแกรมฟังก์ชันใน Java
ไวยากรณ์นิพจน์แลมบ์ดา
ไวยากรณ์ของนิพจน์แลมบ์ดานั้นใช้งานง่าย เข้าใจง่าย และใช้งานง่าย นิพจน์แลมบ์ดาประกอบด้วย:
- พารามิเตอร์อินพุต
- ลูกศรตัวดำเนินการ
- บล็อกของนิพจน์/คำสั่ง
รูปแบบทั่วไปคือ:
<input-params> -> <function-code>
ตัวอย่างนิพจน์แลมบ์ดา
เราจะเข้าใจนิพจน์ Lambda ได้ดีที่สุดผ่านตัวอย่าง ดังนั้น เรามาดูบางส่วนกัน
1. ไม่ยอมรับอินพุตและไม่ส่งคืนเอาต์พุต
นิพจน์ lambda แบบธรรมดาไม่รับอินพุตใดๆ และไม่ส่งคืนเอาต์พุตใดๆ จริงๆ แล้วเป็นเพียงกลุ่มโค้ดที่ทำงานโดยไม่มีบริบทใดๆ
() -> System.out.println("Here I am!");
การระบุ
()ที่จุดเริ่มต้น ในตำแหน่งพารามิเตอร์อินพุต หมายความว่าไม่มีการส่งผ่านพารามิเตอร์ (เช่นเดียวกับวงเล็บว่างที่ตามหลังวิธีการที่ไม่มีพารามิเตอร์)
2. ยอมรับอินพุตเดี่ยว ไม่มีเอาต์พุต
หากต้องการให้นิพจน์แลมบ์ดารับพารามิเตอร์ เราจะวางมันไว้ในตำแหน่งพารามิเตอร์อินพุต:
name -> System.out.println("Here you are too, " + name + "!");
บันทึก : หากเรามีพารามิเตอร์อินพุตตัวเดียว เราสามารถละเว้นวงเล็บได้ นอกจากนี้เรายังสามารถระบุ (ชื่อ) ซึ่งเป็นที่ยอมรับโดยสมบูรณ์
3. ยอมรับหลายอินพุต ไม่มีเอาต์พุต
เมื่อเราส่งพารามิเตอร์อินพุตหลายตัวไปยังนิพจน์แลมบ์ดา เราต้อง:
- ใส่พารามิเตอร์ไว้ในวงเล็บ
- ใช้ลูกน้ำเพื่อแยกระหว่างพวกเขา
(name, food) -> System.out.println("So " + name + " enjoys eating " + food + "... interesting!");
4. มีหลายคำสั่งในส่วนรหัส
การจัดเก็บนิพจน์แลมบ์ดาในคำสั่งบรรทัดเดียวถือเป็นแนวปฏิบัติที่ดี แต่คุณสามารถใช้หลายบรรทัดได้:
() -> {
System.out.println("The owl and the pussycat went to sea");
System.out.println("in a beautiful pea green boat");
}
5. ไม่เคยระบุประเภทการคืนสินค้า
ดังที่คุณอาจสังเกตเห็นแล้วว่า เมื่อกำหนดนิพจน์แลมบ์ดา จะไม่มีการระบุประเภทการส่งคืน นี่คือตัวอย่าง:
() -> System.out.println("I don't return anything!")
และอีกหนึ่ง:
() -> "I return this String!"
ตัวอย่างโค้ดทั้งสองเกือบจะเหมือนกัน แต่แลมบ์ดาตัวที่สองส่งคืนสตริง โปรดจำไว้เสมอเมื่อใช้งาน แน่นอนว่าคอมไพเลอร์จะเข้าใจความแตกต่างระหว่างสิ่งเหล่านั้นผ่านการใช้ตัวอธิบายฟังก์ชันแบบมีเงื่อนไข
6. การอนุมานประเภทจะถูกนำไปใช้โดยอัตโนมัติเมื่อเป็นไปได้
ในการกำหนดประเภท คอมไพลเลอร์จะใช้การอนุมานประเภท เมื่อต้องการทำเช่นนี้ จะดูที่บริบทการดำเนินการของนิพจน์แลมบ์ดา สำหรับนักพัฒนาซอฟต์แวร์ นั่นหมายความว่าพวกเขาจะไม่ต้องกังวลกับการแคสต์เป็นประเภทใดประเภทหนึ่งโดยเฉพาะ
7. สัญกรณ์อธิบายฟังก์ชัน
เมื่อเราคิดว่านิพจน์แลมบ์ดาสามารถกำหนดให้กับประเภทใดได้ การใช้ตัวอธิบายฟังก์ชันจะมีประโยชน์มาก ตัวจัดการฟังก์ชันนั้นเป็นลายเซ็นของวิธีการที่มีอยู่ในนิพจน์แลมบ์ดา (หรือวิธีการ) ไวยากรณ์ของมันเกือบจะเหมือนกับนิพจน์แลมบ์ดา ยกเว้นว่าแทนที่จะเป็นส่วนของโค้ด กลับมีส่วนประเภทเอาต์พุต นี่คือตัวอย่าง:
<input-parameter-types> -> <output-parameter-type>
ตัวอย่างคำอธิบายฟังก์ชัน
นี่คือตัวอย่างบางส่วนของตัวอธิบายฟังก์ชัน:
() -> () วิธีการที่ไม่รับพารามิเตอร์อินพุตและไม่ส่งคืนค่า
(String) -> () วิธีการรับพารามิเตอร์อินพุตและไม่ส่งคืนค่า
() -> (int, float) วิธีการที่ไม่รับพารามิเตอร์อินพุตและส่งกลับ
intและ
float(int[]) - >
(SortedMap<Character, Integer>) วิธีการที่ใช้อาร์เรย์
intและส่งกลับ
SortedMapจาก
Characterเป็น
Integer การมีตัวอธิบายฟังก์ชันช่วยให้ประเมินความเข้ากันได้ของประเภทได้ง่ายขึ้นเมื่อพิจารณาว่าประเภทเป้าหมายใดที่เราสามารถใช้เพื่อนิพจน์แลมบ์ดา
บทสรุป
อย่างที่คุณเห็น นิพจน์ lambda เป็นวิธีที่เรียบร้อยและเรียบง่ายในการสรุปพฤติกรรม มันเป็นหนึ่งในรากฐานของกระบวนทัศน์การเขียนโปรแกรมเชิงฟังก์ชันที่นำมาใช้ใน Java พร้อมกับการเปิดตัว JDK 8
7 คุณสมบัติที่ประเมินต่ำที่สุดของ IntelliJ IDEA
ที่มา:
Better Programming มันยากที่จะเชื่อ แต่หลายปีต่อมา ฉันยังคงพบกับคนที่ไม่รู้เกี่ยวกับคุณสมบัติที่ยอดเยี่ยมเหล่านี้ใน IntelliJ IDEA
1.ค้นหาอะไรก็ได้
เป็นการยากที่จะจดจำทุกคีย์ผสมและติดตามทุกสิ่งที่ IntelliJ IDEA สามารถทำได้ นี่คือสาเหตุที่ฉันมักใช้การค้นหาภายใน IntelliJ IDEA ช่วยให้ฉันค้นหารายการเมนู เครื่องมือ การตั้งค่า และแม้แต่ไฟล์ที่ต้องการได้ในที่เดียว
2. รู้ว่าคุณอยู่ที่ไหน
ก่อนที่ฉันจะพบคุณสมบัตินี้ ฉันใช้ปุ่ม “เลือกเปิดไฟล์” เพื่อแสดงไฟล์ที่แก้ไขในปัจจุบันในแผนผังโปรเจ็กต์
ตอนนี้ IntelliJ IDEA ทำสิ่งนี้ให้ฉัน นี่ไม่ใช่ตัวเลือกเริ่มต้น ดังนั้นคุณจะต้องตั้งค่าให้กับโปรเจ็กต์ใหม่หรือโปรเจ็กต์ที่มีอยู่แต่ละรายการ
3. การเพิ่มประสิทธิภาพ SQL
คุณรู้หรือไม่ว่าปลั๊กอินฐานข้อมูลเริ่มต้นใน IDE ของคุณเป็นมากกว่าตัวดำเนินการ SQL ธรรมดา เนื่องจากข้อเท็จจริงที่ว่าเลเยอร์การคงอยู่ (I/O) นั้นเป็นส่วนที่ช้าที่สุดของแอปพลิเคชันเสมอ ฉันมักจะตรวจสอบให้แน่ใจเสมอว่าคำสั่ง SQL ของฉันมีแผนการดำเนินการที่ดีเมื่อทำงานกับฐานข้อมูลเชิงสัมพันธ์
4. การแก้ไขหลายบรรทัด
คุณอาจเคยใช้คุณสมบัตินี้ใน Sublime Text Editor มาก่อน
5. ย้อนกลับ / ไปข้างหน้า
จริงๆ แล้วฉันมักจะกลับไปยังจุดเดิมโดยกดปุ่มย้อนกลับหรือไปข้างหน้า
ย้อนกลับ/ไปข้างหน้า: ⌥⌘+ลูกศรซ้าย/ขวา (Ctrl+Alt+ลูกศรซ้าย/ขวาสำหรับ Win/Linux) หากต้องการเปิดไฟล์ล่าสุด ให้กด ⌘E (Ctrl+E สำหรับ Win/Linux)
6. บุ๊กมาร์ก
ฉันบุ๊กมาร์กส่วนสำคัญของโค้ดไว้เพื่อให้สามารถอ้างอิงได้อย่างรวดเร็วทุกเมื่อ
หากต้องการไปที่บุ๊กมาร์ก ให้กด ⌃+<number> (Ctrl+<number> สำหรับ Win/Linux) ฉันจะบอกทันทีว่าฉันไม่ได้ใช้บุ๊กมาร์กมากกว่าสามรายการในแต่ละครั้ง เพราะจะทำให้ยากที่จะจำได้ว่ามีไว้เพื่ออะไร
7. เครื่องมือแก้ไขเดียวสำหรับทุกสิ่ง
ฉันเคยเปิดตัวแก้ไขข้อความอื่นๆ เช่น Visual Studio Code หรือ Sublime เพื่อบันทึกบางส่วนของโค้ด, JSON, XML แล้วลิงก์ไปยังส่วนเหล่านั้น แต่นี่ไม่ใช่ส่วนหนึ่งของโค้ดเบส (โปรเจ็กต์) และ IntelliJ IDEA จะเตือนคุณอย่างชัดเจนเมื่อคุณพยายามสร้างหรือแก้ไขบางสิ่งเช่นนี้ จากนั้นฉันก็เห็นเพื่อนร่วมงานคนหนึ่งของฉันใช้ Snippets และรู้ว่ามันอัจฉริยะแค่ไหน
ไฟล์ตัวอย่างใหม่: ⇧⌘N (Shift+Ctrl+N สำหรับ Win/Linux) ตัวอย่างข้อมูลพร้อมใช้งานและซิงค์กับหน้าต่างทั้งหมดของโครงการของคุณ ฉันมักจะใช้สิ่งเหล่านี้เพื่อตรวจสอบและจัดรูปแบบ JSON หรือ SQL ที่ฉันได้รับจากที่อื่น
สูตรลับของฉัน
ไอซิ่งบนเค้กเป็นคุณสมบัติที่ช่วยฉันประหยัดเวลาในการพิมพ์ได้มากทุกวัน
Tabnineเป็นปลั๊กอิน JetBrains สำหรับรวบรวมโค้ด Intellij IDEA ที่ขับเคลื่อนโดย AI ตอนนี้ได้ฟรี แต่ต้องรีบหน่อย ไม่คิดว่าจะใช้งานได้นาน
GO TO FULL VERSION