ไม่มีโครงสร้างแบบง่ายใน Java สำหรับการทำซ้ำบางสิ่งจำนวน N ครั้ง แน่นอนว่าเราสามารถสร้าง for loop ได้ แต่ในกรณีส่วนใหญ่ เราไม่สนใจจริงๆ ว่าเราจะสร้างตัวแปรประเภทใดใน loop เราแค่อยากให้โค้ดบางส่วนถูกทำซ้ำ N ครั้ง เท่านี้ก็เรียบร้อย
ด้วยการเปิดตัวนิพจน์แลมบ์ดาใน Java 8 คุณสามารถใช้สิ่งนี้:
public class RepeatDemo { public static void main(String[] args) { // Повтор одной строки repeat(10, () -> System.out.println("HELLO")); // Повтор нескольких строк repeat(10, () -> { System.out.println("HELLO"); System.out.println("WORLD"); }); } static void repeat(int n, Runnable r) { for (int i = 0; i < n; i++) r.run(); } }
มันอาจจะดูไม่น่าดูหรือชัดเจนเท่ากับลูปแบบเก่า แต่จะกำจัดตัวแปรพิเศษในลูปออกไป หาก Java 8 เท่านั้นที่จะก้าวไปอีกขั้นและจัดเตรียมไวยากรณ์ "ช็อคโกแลต" สำหรับอาร์กิวเมนต์ในนิพจน์แลมบ์ดา เราก็จะมีบางอย่างเช่นโค้ด Scala/Groovy ซึ่งจะทำให้โค้ดมองเห็นได้ชัดเจนยิ่งขึ้น ตัวอย่างเช่น:
// Ну разве не здорово было бы иметь такую конструкцию в Java? repeat(10) { System.out.println("HELLO"); System.out.println("WORLD"); }
แหล่งที่มา
GO TO FULL VERSION