วิธีใช้ Lambda Expressions ใน Java
คุณเคยคิดไหมว่าบาง methods อาจพอดีในบรรทัดเดียว ถ้าไม่ใช่ syntax Java ที่verbose ที่คุณต้องใช้ประกาศ method? คุณไม่ได้เป็นคนเดียว
Methods เป็นฟีเจอร์ที่มีประโยชน์อย่างยิ่งในการเขียนโปรแกรม
Method คือบล็อกโค้ดที่ทำบางอย่างเฉพาะในโปรแกรมของคุณ พวกมันถูกใช้เพราะเมื่อคุณ define method คุณสามารถเรียกมันหลายครั้ง นี่ช่วยลด redundancy ในโค้ดของคุณ ซึ่งล่ามทำให้โค้ดของคุณง่ายต่อการ maintain
ในคู่มือนี้ เราจะพูดถึง lambda expressions ใน Java นี่คือประเภท method พิเศษที่คุณสามารถใช้ได้ เรียกว่า lambda expression ซึ่ง implement functional interface เราจะพูดถึงว่าพวกมันทำงานอย่างไร และทำไมจึงถูกใช้
Functional Interface คืออะไร?
ก่อนที่เราจะไปพูดถึง lambda expressions คุณต้องเข้าใจ functional interfaces นี่คือ interfaces ที่มีเพียงหนึ่ง abstract method เท่านั้น Abstract method เดียวที่อยู่ภายใน functional interface ระบุวัตถุประสงค์ของ interface
พิจารณาตัวอย่างนี้:
interface CalculateThree { double multiply_by_three(String day); } เราสร้าง interface ชื่อ CalculateThree Interface นี้มีเพียงหนึ่งเมธอด multiply_by_three ซึ่งหมายความว่ามันเป็น functional interface
Java Lambda Expression คืออะไร?
Lambda expression คือ unnamed method มันถูกใช้เพื่อ implement เมธอดที่ถูกกำหนดภายใน functional interface Lambda expressions บางครั้งเรียกว่า anonymous methods เพราะพวกมันไม่มีชื่อ
81% ของผู้เข้าร่วมระบุว่ารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสงานทางเทคโนโลยีหลังจากเข้าร่วมบูทแคมป์ ได้รับการจับคู่กับบูทแคมป์วันนี้
นักศึกษาจบบูทแคมป์เฉลี่ยใช้เวลาน้อยกว่า 6 เดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มบูทแคมป์จนหางานแรก
Lambda expressions ใช้ arrow operator ซึ่งแบ่งพวกมันออกเป็นสองส่วน:
(parameter list) -> lambda body
ด้านซ้ายมี parameters ที่ expression ใช้ ด้านขวามีโค้ดที่จะ run เมื่อ Lambda expression ถูก execute Lambda functions สามารถรับ single parameter หรือ multiple parameters ได้
วิธีใช้ Lambda Expression
มาสร้างโปรแกรมที่รับตัวเลขที่ผู้ใช้ป้อนและคูณด้วยสาม เราจะเริ่มด้วยการเขียนโค้ดที่รับตัวเลขจากผู้ใช้:
import java.util.Scanner; class Main { public static void main(String args[]) { Scanner user_input = new Scanner(System.in); System.out.println("Insert a number to multiply by three: "); double user_number = user_input.nextDouble(); } } เมื่อเรา run โค้ดนี้ ผู้ใช้ของเราจะได้รับ prompt ให้ป้อนตัวเลขเพื่อคูณ โปรแกรมของเราจะอ่านตัวเลขนั้นเข้าตัวแปร "user_number" คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับวิธีการทำงานของ Scanner class โดยอ่านบทช่วยสอนของเราเกี่ยวกับ Java Scanner
ต่อไป เราจะ define lambda expression เพื่อคูณตัวเลขด้วยสาม Paste โค้ดต่อไปนี้เหนือเมธอด main ของคุณ:
interface CalculateThree { double multiply_by_three(double number); } โค้ดนี้ define interface ที่ lambda expression ของเราจะอ้างอิง จากนั้นเพิ่มโค้ดต่อไปนี้ที่ด้านล่างของเมธอด main ใน class:
CalculateThree multiply = (number) -> number * 3; double answer = multiply.multiply_by_three(user_number); System.out.println(user_number + " multiplied by three is " + answer);
เราใช้ CalculateThree interface เพื่อ declare ตัวแปรชื่อ "multiply" นี่จัดเก็บโค้ดสำหรับ lambda expression ของเรา Lambda expression เกี่ยวข้องกับ multiply_by_three ใน CalculateThree interface ของเรา เพราะ multiply_by_three เป็นฟังก์ชันเดียวใน interface
เราใช้ dot notation เพื่อเรียกฟังก์ชันนี้:
multiply.multiply_by_three(user_number);
Dot notation คือที่คุณระบุชื่อของ class หรือ interface ที่คุณต้องการอ้างอิง ตามด้วย dot แล้วตามด้วยชื่อเมธอดที่คุณต้องการเข้าถึง ในกรณีนี้ เราต้องการเข้าถึงเมธอด multiply_by_three ภายใน interface "multiply"
โค้ดสุดท้ายของเรามีลักษณะดังนี้:
import java.util.Scanner; interface CalculateThree { double multiply_by_three(double number); } class Main { public static void main(String args[]) { Scanner user_input = new Scanner(System.in); System.out.println("Insert a number to multiply by three: "); double user_number = user_input.nextDouble(); CalculateThree multiply = (number) -> number * 3; double answer = multiply.multiply_by_three(user_number); System.out.println(user_number + " multiplied by three is " + answer); } } มา run โค้ดของเราและป้อนหมายเลข 3 เพื่อคูณ:
Insert a number to multiply by three: 3 3.0 multiplied by three is 9.0
โค้ดของเราคูณตัวเลขที่เราป้อนด้วย 3 สำเร็จ การกระทำนี้ถูกดำเนินการโดย lambda expression ที่เรา define
วิธีใช้ Block Lambda Expression
Lambda expressions สามารถปรากฏในสองรูปแบบ: ใช้ single expressions หรือใช้ blocks Block lambda syntax ใช้เมื่อโค้ดด้านขวาของลูกศรจะใช้หลายบรรทัด
Block syntax คือที่คุณล้อมรอบโค้ดในด้านขวาของ lambda expression ด้วย curly braces ({})
พิจารณาตัวอย่างนี้:
interface GreetUser { String welcome_user(String name); } class Main { public static void main(String args[]) { GreetUser send_greeting = (name) -> { System.out.println("Good morning!"); System.out.println("Welcome, " + name); }; System.out.println(send_greeting.welcome_user("Brad")); } } เรา declare lambda expression ชื่อ send_greeting Expression นี้อ้างอิง interface GreetUser ที่เรา define ที่เริ่มต้นของโปรแกรมของเรา Lambda expression ของเราทำสองการกระทำ มัน:
- พิมพ์ "Good morning!" ไปที่ console
- พิมพ์ "Welcome, " ตามด้วยชื่อผู้ใช้ ไปที่ console
เพราะนี้ใช้สองบรรทัดของโค้ด เราจึงใช้ block syntax โค้ดด้านขวาของ lambda expression ของเราถูกล้อมรอบด้วย curly braces
สรุป
Lambda expressions คือ unnamed methods ที่ implement functional interface ฟังก์ชันเหล่านี้บางครั้งเรียกว่า anonymous classes หรือ functions เพราะพวกมันไม่มีชื่อและพวกมันไม่ execute เอง
คุณพร้อมสำหรับ challenge ไหม? เขียน lambda expression ที่ตรวจสอบว่าหมายเลขเป็นคู่หรือไม่ หากเป็น ให้พิมพ์ "X is even" ไปที่ console โดย X คือหมายเลขที่ทดสอบ มิฉะนั้น ให้พิมพ์ "X is odd" ไปที่ console
ตอนนี้คุณพร้อมที่จะเริ่มทำงานกับ lambda expressions ใน Java อย่างเชี่ยวชาญแล้ว!