Groovy บทช่วยสอนสคริปต์สำหรับผู้เริ่มต้น

⚡ สรุปอย่างชาญฉลาด

Groovy Script เป็นภาษาเชิงวัตถุสำหรับ Java แพลตฟอร์มที่คอมไพล์เป็นไบต์โค้ด JVM โดยเพิ่มประเภทข้อมูลแบบไดนามิกpingรวมถึงการปิดและไวยากรณ์ที่กระชับเพื่อ Javaและมันให้พลังงาน Jenkins ท่อ, Gradle สร้างและ SoapUI การยืนยัน

  • 🧩 Java เข้ากันได้: ถูกต้องที่สุด Java โค้ดคอมไพล์ได้โดยไม่มีการเปลี่ยนแปลงใน Groovyดังนั้นต้นทุนการเรียนรู้จึงอยู่ในระดับต่ำมาก
  • ⚡ Less ข้อความมาตรฐาน: บรรทัดคำสั่ง println เพียงบรรทัดเดียวสามารถแทนที่คลาส เมธอด main และการเรียกใช้ System.out ได้ Java ความต้องการ
  • 🔀 ไดนามิกไทping: คีย์เวิร์ด `def` ช่วยให้ตัวแปรหนึ่งสามารถเก็บค่าจำนวนเต็ม (Integer) และอีกตัวแปรหนึ่งสามารถเก็บค่าสตริง (String) ได้ในขณะรันไทม์
  • 🔁 ลูปขนาดกะทัดรัด: เมธอด upto, times และ step แทนที่ลูป for แบบยุ่งยากในภาษา C ด้วยโค้ดเพียงบรรทัดเดียว
  • 📦 คอลเลกชันพื้นเมือง: รายการและแผนที่นั้นมีไวยากรณ์ตามตัวอักษร พร้อมด้วยตัวช่วยต่างๆ เช่น pop, keySet และ sort
  • 🧠 ปิด: บล็อกของโค้ดทำหน้าที่เสมือนอ็อบเจ็กต์ รับพารามิเตอร์ ส่งคืนค่า และซ้อนอยู่ภายในฟังก์ชันปิดอื่นๆ ได้
  • ⚙️ เครื่องมือสามอย่าง: groovysh ให้เชลล์, groovyConsole ให้ GUI และ groovy รันไฟล์สคริปต์โดยตรง

Groovy บทช่วยสอนสคริปต์สำหรับผู้เริ่มต้น

อะไรคือ a Groovy สคริปต์?

อาปาเช่ Groovy เป็นภาษาเชิงวัตถุ Java ภาษาโปรแกรมที่เข้ากันได้กับไวยากรณ์ สร้างขึ้นสำหรับ Java แพลตฟอร์ม ภาษาแบบไดนามิกนี้มีคุณสมบัติหลายอย่างที่คล้ายคลึงกับ Pythonรูบี้, สมอลล์ทอล์ค และเพิร์ล Groovy ซอร์สโค้ดถูกคอมไพล์เป็น Java ไบต์โค้ด ดังนั้นจึงสามารถทำงานได้บนทุกแพลตฟอร์มที่รองรับ Java ติดตั้งเครื่องเสมือนเรียบร้อยแล้ว Groovy นอกจากนี้ยังมีการทำงานเบื้องหลังมากมาย ซึ่งทำให้รู้สึกคล่องตัวและมีพลวัตมากกว่าแบบธรรมดา Java.

A Groovy ต้นฉบับ เป็นเพียงแค่ .groovy ไฟล์ที่มีคำสั่งต่างๆ ที่ Groovy โค้ดจะห่อหุ้มด้วยคลาสที่สร้างขึ้นก่อนที่จะรัน นั่นเป็นเหตุผลที่คุณสามารถเรียกใช้ไฟล์บรรทัดเดียวได้โดยไม่ต้องเขียนคลาสหรืออะไรเพิ่มเติม main วิธี Groovy จึงสามารถใช้เป็นภาษาสคริปต์สำหรับ Java แพลตฟอร์มนี้ยังคงนำเสนอความสามารถระดับองค์กรเช่นเดิม Javaนอกจากนี้ยังเพิ่มคุณสมบัติที่ช่วยเพิ่มประสิทธิภาพการทำงาน เช่น การรองรับ DSL การปิด และประเภทข้อมูลแบบไดนามิก (ตัวเลือกเสริม)ping. แตกต่างจากภาษาอื่นๆ บางภาษา มันถูกออกแบบมาเพื่อใช้ควบคู่กับ Javaไม่ใช่สิ่งที่จะมาแทนที่มัน

💡 เคล็ดลับ: Groovy เวอร์ชัน 5.0 เป็นเวอร์ชันเสถียรปัจจุบันและรองรับ JDK 11 ขึ้นไป Groovy เวอร์ชัน 4.0 ยังคงใช้งานได้สำหรับโปรเจกต์ JDK 8 และ Groovy เวอร์ชัน 6.0 ยังอยู่ในช่วงอัลฟ่าสำหรับ JDK 17 โปรดตรวจสอบตารางความต้องการของระบบในหน้าดาวน์โหลดอย่างเป็นทางการก่อนเลือกเวอร์ชันเสมอ

ทำไม Groovy?

นี่คือเหตุผลสำคัญที่คุณควรใช้และเรียนรู้ Groovy:

  • Groovy เป็นภาษาที่มีความคล่องตัวและยืดหยุ่นสูง
  • สามารถผสานรวมเข้ากับระบบที่มีอยู่ทั้งหมดได้อย่างราบรื่น Java วัตถุและไลบรารี
  • รู้สึกว่ามันง่ายและเป็นธรรมชาติ Java นักพัฒนา
  • โค้ดนี้กระชับและมีความหมายมากกว่าโค้ดที่เทียบเท่ากัน Java รหัส.
  • คุณสามารถใช้มันมากหรือน้อยเท่าที่คุณต้องการภายในได้ Java การใช้งาน
  • มันทำงานบนระบบมาตรฐาน Java เครื่องเสมือนดังนั้นจึงไม่จำเป็นต้องมีรันไทม์แยกต่างหาก

Groovy ประวัติขององค์กร

  • 2003: เริ่มต้นโดย เจมส์ เอสtracฮันและบ็อบ แม็คWhirตรี
  • 2004: ส่งไปที่ Java กระบวนการชุมชนในรูปแบบ JSR 241 ซึ่งต่อมาถูกยกเลิกไป
  • 2005: นำกลับมาอีกครั้ง track โดย Jeremy Rayner และ Guillaume Laforge
  • 2007: Groovy วางจำหน่ายแล้ว 1.0 ฉบับ
  • 2012: Groovy วางจำหน่ายแล้ว 2.0 ฉบับ
  • 2014: Groovy เวอร์ชัน 2.3 เปิดตัวพร้อมรองรับ JDK 8 อย่างเป็นทางการ
  • 2015: Groovy กลายเป็นโครงการระดับสูงสุดที่ Apache Software Foundation.
  • 2022: Groovy เวอร์ชัน 4.0 เปิดตัวแล้ว โดยมีการย้ายพิกัด Maven ไปยัง org.apache.groovy.
  • 2025: Groovy เวอร์ชัน 5.0 เปิดตัวสำหรับ JDK 11 ขึ้นไป

คุณสมบัติของ Groovy

  • รูปแบบรายการ แผนที่ ช่วง และนิพจน์ปกติ
  • มัลติเมธอด (การเรียกใช้เมธอดขณะรันไทม์) และเมตาโปรแกรมมิ่ง
  • Groovy คลาสและสคริปต์มักจะถูกจัดเก็บไว้ใน .groovy ไฟล์
  • สคริปต์ประกอบด้วย Groovy ข้อความโดยไม่มีการประกาศชั้นเรียนใดๆ
  • สคริปต์ยังสามารถมีคำจำกัดความของวิธีการที่อยู่นอกคำจำกัดความของคลาสได้
  • Groovy โค้ดสามารถคอมไพล์และผสานรวมเข้ากับระบบแบบดั้งเดิมได้อย่างสมบูรณ์ Java แอพลิเคชัน
  • รองรับการใช้งานแผนที่ รายการ และนิพจน์ปกติในระดับภาษา
  • การสนับสนุนการปิด, ประเภทแบบไดนามิกpingและโปรโตคอลเมตาออบเจ็กต์
  • รองรับทั้งประเภทคงที่และประเภทไดนามิกpingรวมถึงการทำงานหนักเกินไปของผู้ปฏิบัติงานด้วย
  • การตรวจสอบประเภทแบบคงที่ (ไม่บังคับ) ผ่านทาง @TypeChecked และ @CompileStatic คำอธิบายประกอบ

วิธีการติดตั้ง Groovy

ขั้นตอน 1) รับรองว่ามี Java การติดตั้ง.

ขั้นตอน 2) ไปที่ https://groovy.apache.org/download.html และคลิกที่ Windows ลิงก์ตัวติดตั้ง

Groovy หน้าดาวน์โหลดพร้อมลิงก์ตัวติดตั้ง

หมายเหตุ: คุณยังสามารถติดตั้งได้ Groovy จากไฟล์ Zip ไบนารี ผ่านตัวจัดการแพ็กเกจ เช่น SDKMAN!, Homebrew, Scoop หรือ Chocolatey หรือเป็นปลั๊กอินสำหรับโปรแกรมของคุณ Java IDE. ในการนี​​้ Groovy เราจะยึดตามคำแนะนำนี้เป็นหลัก Windows ติดตั้ง

ขั้นตอน 3) เปิดโปรแกรมติดตั้งที่ดาวน์โหลดมา เลือกภาษา แล้วคลิก ตกลง

Groovy หน้าต่างเลือกภาษาสำหรับตัวติดตั้ง

ขั้นตอน 4) บนหน้าจอต้อนรับ ให้คลิก ถัดไป

Groovy หน้าจอต้อนรับผู้ติดตั้ง

ขั้นตอน 5) ยอมรับเงื่อนไขของใบอนุญาต

Groovy หน้าจอข้อตกลงใบอนุญาตการติดตั้ง

ขั้นตอน 6) เลือกส่วนประกอบที่คุณต้องการติดตั้ง แล้วคลิก ถัดไป

Groovy หน้าจอเลือกส่วนประกอบของผู้ติดตั้ง

ขั้นตอน 7) เลือกไดเร็กทอรีการติดตั้งแล้วคลิก ถัดไป

Groovy หน้าจอไดเร็กทอรีการติดตั้งตัวติดตั้ง

ขั้นตอน 8) เลือกโฟลเดอร์เมนูเริ่มต้นแล้วคลิกถัดไป

Groovy หน้าจอโฟลเดอร์เมนูเริ่มต้นตัวติดตั้ง

ขั้นตอน 9) เมื่อการติดตั้งเสร็จสิ้นแล้ว ให้คงค่าเส้นทางไว้ตามค่าเริ่มต้น แล้วคลิกถัดไป

Groovy หน้าจอเส้นทางสภาพแวดล้อมการติดตั้ง

ขั้นตอน 10) ยืนยันตัวเลือกการเชื่อมโยงไฟล์แล้วคลิก ถัดไป

Groovy หน้าจอการเชื่อมโยงไฟล์ตัวติดตั้ง

ขั้นตอน 11) ในเมนูเริ่มต้น ให้ค้นหา Groovy เพื่อยืนยันการติดตั้งบนคอนโซล

การค้นหาในเมนูเริ่มต้นแสดงผลลัพธ์ Groovy ทางลัดคอนโซล

⚠️คำเตือน: การขอ Windows ตัวติดตั้งนี้เป็นผลงานที่เกิดจากความร่วมมือของชุมชน ไม่ใช่เวอร์ชันอย่างเป็นทางการของ Apache หากองค์กรของคุณต้องการดาวน์โหลด Apache ที่มีลายเซ็นดิจิทัล โปรดใช้ไฟล์ Zip แบบไบนารีและตรวจสอบความถูกต้อง .asc ลายเซ็นและ .sha256 ใช้ค่าตรวจสอบความถูกต้อง (checksum) แทน

Groovy สวัสดีชาวโลก ตัวอย่าง

สมมติว่าคุณต้องการพิมพ์ข้อความง่ายๆ ว่า “Hello World” ใน Javaโค้ดจะมีลักษณะดังนี้

public class Demo {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}

Output:

Hello World

โค้ดด้านบนใช้ได้ทั้งสองแบบ Java และ Groovy, เพราะ Groovy ยอมรับเกือบทุกอย่าง Java ไวยากรณ์ ข้อดีของ Groovy ข้อดีคือ คุณสามารถละเว้นการประกาศคลาส เมธอดสาธารณะ และการเรียกใช้ฟังก์ชันพิมพ์แบบเต็มรูปแบบ และได้ผลลัพธ์เดียวกันด้วยบรรทัดเดียว

println "Hello World"

Output:

Hello World
  • ไม่จำเป็นต้องใช้เครื่องหมายเซมิโคลอน
  • ไม่จำเป็นต้องมีชั้นเรียนหรืออะไรเลย main วิธี
  • System.out.println จะลดลงเหลือ println.

Groovy ตัวแปร

In Javaการผูกค่าแบบคงที่ (static binding) เป็นสิ่งที่จำเป็น ซึ่งหมายความว่าต้องประกาศชนิดของตัวแปรไว้ล่วงหน้า

public class Demo {
    public static void main(String[] args) {
        int x = 104;
        System.out.println(x);
        //x = "Guru99";
    }
}

Output:

104

ในตัวอย่างข้างต้น ประเภทของตัวแปรถูกประกาศไว้ล่วงหน้าโดยใช้คีย์เวิร์ด intหากคุณต้องการประกาศตัวเลขทศนิยม คุณจะต้องใช้คำหลัก `floating point` float or double.

หากคุณพยายามกำหนดค่าสตริงให้กับ int (ลบเครื่องหมายคอมเมนต์ออกจากบรรทัดที่ 5) คุณจะได้รับข้อผิดพลาดในการคอมไพล์ดังต่อไปนี้

Demo.java:5: error: incompatible types: String cannot be converted to int
x = "Guru99";

ในทางตรงกันข้าม, Groovy รองรับประเภทข้อมูลแบบไดนามิกpingตัวแปรถูกกำหนดโดยใช้คำหลัก defและไม่จำเป็นต้องประกาศชนิดข้อมูลล่วงหน้า ระบบจะตรวจสอบชนิดข้อมูลของตัวแปรเอง และคุณยังสามารถเปลี่ยนชนิดข้อมูลนั้นได้ในภายหลัง

def x = 104
println x.getClass()
x = "Guru99"
println x.getClass()

Output:

class java.lang.Integer
class java.lang.String

In Groovy คุณสามารถสร้างสตริงหลายบรรทัดได้เช่นกัน เพียงแต่ต้องแน่ใจว่าได้ใส่เครื่องหมายอัญประกาศสามตัวครอบสตริงนั้นไว้

def x = """Groovy
at
Guru99"""
println x

Output:

Groovy
at
Guru99

หมายเหตุ คุณยังสามารถใช้ประเภทที่ระบุอย่างชัดเจนได้ เช่น byte, short, intและ long in Groovyแต่เมื่อคุณประกาศประเภทอย่างชัดเจนแล้ว คุณจะไม่สามารถเปลี่ยนแปลงประเภทนั้นได้แบบไดนามิก

int x = 104
println x
x = "Guru99"

Output:

104
Caught: org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'Guru99' with class 'java.lang.String' to class 'int'
org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'Guru99' with class 'java.lang.String' to class 'int'
    at jdoodle.run(jdoodle.groovy:3)
Command exited with non-zero status 1

Groovy Operaโปร

ตัวดำเนินการ คือ สัญลักษณ์ที่บอกให้คอมไพเลอร์ทำการคำนวณทางคณิตศาสตร์หรือตรรกะเฉพาะอย่างใดอย่างหนึ่ง Groovy รองรับโอเปอเรเตอร์ 5 ตระกูลต่อไปนี้

  • ตัวดำเนินการเลขคณิต: เพิ่ม (+), ลบtract (-), คูณ (*), หาร (/), ค่าสัมบูรณ์ (%), เพิ่มค่า (++), ลดค่า (–).
  • ตัวดำเนินการเชิงสัมพันธ์: เท่ากับ (==), ไม่เท่ากับ (!=), น้อยกว่า (<), น้อยกว่าหรือเท่ากับ (<=), มากกว่า (>), มากกว่าหรือเท่ากับ (>=)
  • ตัวดำเนินการเชิงตรรกะ: และ (&&) หรือ (||) ไม่ใช่ (!)
  • ตัวดำเนินการ Bitwise: และ (&), หรือ (|), เอกซ์คลูซีฟออร์ (^), ส่วนเติมเต็ม (~).
  • ผู้ดำเนินการมอบหมาย: กำหนด (=) และรูปแบบผสม (+=), (-=), (*=), (/=), (%=)

Groovy เพิ่มตัวดำเนินการบางตัวที่ Java ไม่มี และพวกเขายังตัดโค้ดตรวจสอบค่าว่างที่ซ้ำซ้อนออกไปได้มากอีกด้วย

OperaTor Descriptไอออน
?. การนำทางที่ปลอดภัย ส่งคืนค่า null แทนที่จะโยนข้อยกเว้น NullPointerException เมื่อด้านซ้ายเป็นค่า null
?: ตัวดำเนินการเอลวิส ส่งคืนค่าด้านซ้ายหากเป็นค่าจริง มิฉะนั้นจะส่งคืนค่าด้านขวา
<=> ตัวดำเนินการยานอวกาศ ทำหน้าที่แทน compareTo และมีประโยชน์ภายในฟังก์ชันเรียงลำดับ (sort closures)
==~ การจับคู่ด้วย Regex จะส่งคืนค่าจริงก็ต่อเมื่อสตริงทั้งหมดตรงกับรูปแบบที่กำหนดเท่านั้น

Groovy ลูป

In Javaคุณสามารถกำหนดลูปนับได้ดังนี้

public class Demo {
    public static void main(String[] args) {
        for (int x = 0; x <= 5; x++) {
            System.out.println(x);
        }
    }
}

Output:

0
1
2
3
4
5

คุณสามารถบรรลุผลลัพธ์เดียวกันได้ Groovy กับ upto วิธีการซึ่งรวมขอบเขตทั้งสองไว้ด้วยกัน

0.upto(5) { println "$it" }

Output:

0
1
2
3
4
5

Here it เป็นพารามิเตอร์โดยปริยายของฟังก์ชันปิด และมันจะเก็บค่าของการวนซ้ำปัจจุบัน พิจารณาโค้ดต่อไปนี้

2.upto(4) { println "$it" }

Output:

2
3
4

นอกจากนี้คุณยังสามารถใช้ times วิธีการนี้จะเริ่มต้นที่ 0 เสมอและหยุดก่อนถึงตัวเลขที่คุณเรียกใช้หนึ่งค่า ดังนั้นคุณต้องใช้ 6 เพื่อพิมพ์ตัวเลขตั้งแต่ 0 ถึง 5

6.times { println "$it" }

Output:

0
1
2
3
4
5

สมมติว่าคุณต้องการพิมพ์ตัวเลข 0, 2 และ 4 ด้วย Java สำหรับห่วง.

public class Demo {
    public static void main(String[] args) {
        for (int x = 0; x <= 5; x=x+2) {
            System.out.println(x);
        }
    }
}

Output:

0
2
4

คุณสามารถใช้ step วิธีการเดียวกันที่ให้ผลลัพธ์เหมือนกัน โดยอาร์กิวเมนต์ตัวที่สองคือค่าเพิ่มขึ้น และอาร์กิวเมนต์ตัวแรกคือขอบเขตบนที่ไม่รวมค่าเพิ่ม

0.step(5, 2) { println "$it" }

Output:

0
2
4

Groovy การตัดสินใจ

Groovy นำกลับมาใช้ใหม่ Java คำสั่งเงื่อนไขและเพิ่มความยืดหยุ่นมากขึ้น switchตารางด้านล่างนี้สรุปตัวเลือกต่างๆ ไว้

คำแถลง Descriptไอออน
ถ้าคำสั่ง เช่นใน Javaโดยส่วนของคำสั่ง if จะถูกดำเนินการเมื่อเงื่อนไขเป็นจริง
คำสั่ง if/else เงื่อนไขในคำสั่ง if จะถูกประเมินก่อน หากเป็นจริง คำสั่งในบล็อก if จะทำงาน และบล็อก else จะถูกข้ามไป หากเป็นเท็จ คำสั่งในบล็อก else จะทำงานแทน
คำสั่ง if ซ้อนกัน ใช้เมื่อคุณต้องการทดสอบเงื่อนไขเพิ่มเติมภายในบล็อก if
สลับคำสั่ง การใช้คำสั่ง if-else ซ้อนกันหลายชั้นจะทำให้เข้าใจยากเมื่อมีเงื่อนไขมากมาย คำสั่ง switch ทำให้ตรรกะเดียวกันนั้นอ่านง่ายขึ้น Groovyป้ายกำกับกรณีสามารถเป็นค่า, คลาส, ช่วง, นิพจน์ปกติ หรือฟังก์ชันปิดได้
คำสั่ง switch ซ้อนกัน Groovy นอกจากนี้ยังช่วยให้สามารถวางคำสั่ง switch หนึ่งไว้ภายในอีกคำสั่งหนึ่งได้

Groovy รายการ

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

ตัวอย่างของ Groovy รายการ:

  • รายการข้อความ: ['Angular', 'Nodejs']
  • รายการอ้างอิงวัตถุผสม: ['Groovy', 2, 4, 2.6]
  • รายการค่าจำนวนเต็ม: [16, 17, 18, 19]
  • รายการว่างเปล่า: []

เมธอดรายการต่อไปนี้มีให้ใช้งานใน Groovy.

วิธี Descriptไอออน
เพิ่ม() เพิ่มค่าใหม่ต่อท้ายรายการ
ประกอบด้วย() ส่งคืนค่าจริงหากลิสต์มีค่าที่กำหนดไว้
รับ () ส่งคืนองค์ประกอบที่ตำแหน่งที่กำหนด
มันว่างเปล่า() ส่งคืนค่าจริงหากลิสต์ไม่มีองค์ประกอบใดๆ
ลบ() สร้างลิสต์ใหม่ที่ประกอบด้วยองค์ประกอบจากลิสต์เดิม โดยไม่รวมองค์ประกอบที่ระบุไว้ในชุดข้อมูลที่ให้มา
บวก() สร้างลิสต์ใหม่ที่ประกอบด้วยองค์ประกอบจากลิสต์เดิมรวมกับองค์ประกอบในชุดข้อมูลที่กำหนดให้
ป๊อป () ลบรายการสุดท้ายออกจากรายการและส่งคืนค่าดังกล่าว
ลบ () ลบองค์ประกอบที่ตำแหน่งที่กำหนด
ย้อนกลับ () สร้างลิสต์ใหม่ที่สลับลำดับขององค์ประกอบในลิสต์เดิม
ขนาด() ส่งคืนจำนวนองค์ประกอบในรายการ (List)
เรียงลำดับ () ส่งคืนสำเนาของรายการที่เรียงลำดับแล้ว

พิจารณาดังต่อไปนี้ Groovy ตัวอย่างสคริปต์

def y = ["Guru99", "is", "Best", "for", "Groovy"]
println y
y.add("Learning")
println(y.contains("is"))
println(y.get(2))
println(y.pop())

Output:

[Guru99, is, Best, for, Groovy]
true
Best
Learning

บรรทัดแรกจะพิมพ์รายการห้าองค์ประกอบดั้งเดิมออกมา เนื่องจาก add() ยังไม่ได้ดำเนินการ get(2) คืนค่า “ดีที่สุดตั้งแต่” Groovy รายการต่างๆ จะเริ่มต้นดัชนีที่ศูนย์ และ pop() จะส่งคืนค่า "การเรียนรู้" เนื่องจากรายการดังกล่าวถูกเพิ่มเข้ามาเป็นรายการสุดท้าย

Groovy แผนที่

A Groovy Map คือชุดของคู่คีย์-ค่า คีย์ไม่จำเป็นต้องมีเครื่องหมายคำพูดหากเป็นเพียงตัวระบุธรรมดา ซึ่งทำให้โครงสร้างของ Map กระชับมากยิ่งขึ้น

ตัวอย่างของ Groovy แผนที่:

  • [tutorial: 'Java', language: 'Groovy'] คือชุดของคู่คีย์-ค่าสองคู่
  • [:] แสดงถึงแผนที่ว่างเปล่า

นี่คือรายชื่อวิธีการสร้างแผนที่ที่มีให้เลือกใช้ Groovy.

วิธี Descriptไอออน
มีคีย์() ตรวจสอบว่าแผนที่ประกอบด้วยคีย์ที่กำหนดหรือไม่
รับ () ค้นหาคีย์ในแผนที่และส่งคืนค่าที่ตรงกัน หากไม่พบรายการใด ๆ จะส่งคืนค่าว่าง (null)
ชุดคีย์() ส่งคืนชุดคีย์ในแผนที่ (Map)
ใส่() เชื่อมโยงค่าที่ระบุกับคีย์ที่กำหนด หากแผนที่นั้นมีแผนที่อยู่แล้วping สำหรับคีย์นั้น ค่าเดิมจะถูกแทนที่ด้วยค่าใหม่
ขนาด() ส่งคืนจำนวนแผนที่คู่คีย์-ค่าpings.
ค่า () ส่งคืน Collection View ของค่าต่างๆ

Groovy ตัวอย่าง:

def y = [fName:'Jen', lName:'Cruise', sex:'F']
print y.get("fName")

Output:

Jen

Groovy ปิด

A Groovy Closure คือกลุ่มของโค้ดที่ถูกห่อหุ้มไว้ในรูปของอ็อบเจ็กต์ มันทำงานคล้ายกับเมธอดหรือฟังก์ชัน แต่สามารถเก็บไว้ในตัวแปรและส่งต่อได้เหมือนค่าอื่นๆ

ตัวอย่างของการปิดแบบง่าย:

def myClosure = {
    println "My First Closure"
}
myClosure()

Output:

My First Closure

ฟังก์ชันปิดสามารถรับพารามิเตอร์ได้ โดยรายการตัวระบุจะคั่นด้วยเครื่องหมายจุลภาค และมีลูกศร (->) กำกับไว้ที่จุดสิ้นสุดของรายการพารามิเตอร์

def myClosure = {
    a, b, c ->
    y = a + b + c
    println y
}
myClosure(1, 2, 3)

Output:

6

closure สามารถส่งค่ากลับได้เช่นกัน

def myClosure = {
    a, b, c ->
    return (a + b + c)
}
println(myClosure(1, 2, 3))

Output:

6

เมื่อคุณไม่ได้ประกาศรายการพารามิเตอร์ Groovy ระบุพารามิเตอร์แฝงตัวเดียวชื่อ itการปิดสามารถส่งต่อไปยังการปิดอื่นๆ ได้เช่นกัน ซึ่งเป็นวิธีการทำงานของวิธีการเก็บรวบรวมข้อมูลต่างๆ เช่น each, collectและ findAll ทำงาน

Groovy เครื่องมือ

เราจะมาดูเครื่องมือสำคัญสามอย่างที่มาพร้อมกับชุดนี้ Groovy การกระจาย:

  1. เจ๋งไปเลย: เรียกใช้โค้ดแบบโต้ตอบจากบรรทัดคำสั่ง
  2. groovyConsole: หน้าต่างกราฟิกสำหรับการเรียกใช้โค้ดแบบโต้ตอบ
  3. เจ๋งไปเลย: ดำเนินการ Groovy ไฟล์สคริปต์ ในลักษณะเดียวกับการเรียกใช้ไฟล์ Perl หรือ Python ต้นฉบับ

Groovysh

  • เชลล์แบบบรรทัดคำสั่ง
  • ช่วยให้คุณดำเนินการได้ Groovy เขียนโค้ดแบบโต้ตอบ
  • อนุญาตให้คุณป้อนคำสั่งเดี่ยวหรือสคริปต์ทั้งหมดได้

ภาพหน้าจอด้านล่างแสดงให้เห็นว่า Groovysh ประเมินนิพจน์ทีละบรรทัด

เรียกใช้เชลล์บรรทัดคำสั่ง groovysh Groovy งบ

Groovy ปลอบใจ

  • อินเทอร์เฟซ Swing ที่ทำหน้าที่เป็นแบบขั้นต่ำ Groovy บรรณาธิการพัฒนา
  • อนุญาตให้คุณเขียนและเรียกใช้งานได้ Groovy เขียนโค้ดแบบโต้ตอบ
  • ช่วยให้คุณโหลดและเรียกใช้งานได้ Groovy ไฟล์สคริปต์

ตัว Vortex Indicator ได้ถูกนำเสนอลงในนิตยสาร Groovy คอนโซลด้านล่าง สามารถพิมพ์สคริปต์ในช่องด้านบน และผลลัพธ์จะปรากฏในช่องด้านล่าง

Groovy โปรแกรมแก้ไข Swing บนคอนโซล พร้อมช่องสำหรับเขียนสคริปต์และแสดงผลลัพธ์

Groovy

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

คำสั่ง groovy ที่ใช้เรียกใช้สคริปต์จากเทอร์มินัล

ที่ไหน Groovy นำไปใช้ในโครงการจริง

นักพัฒนาส่วนใหญ่พบเจอ Groovy ไม่ใช่ในฐานะภาษาเดี่ยวๆ แต่เป็นเลเยอร์การเขียนสคริปต์ภายในเครื่องมือที่พวกเขาใช้งานอยู่แล้ว การรู้ว่ามันปรากฏอยู่ที่ใดทำให้การวางไวยากรณ์ข้างต้นง่ายขึ้นมาก

เครื่องมือ สรุป ความน่าเชื่อถือของ Olymp Trade? Groovy ถูกนำมาใช้
Jenkins ไปป์ไลน์แบบประกาศและแบบสคริปต์เขียนด้วยภาษาโปรแกรมแบบประกาศ Groovy DSL และไลบรารีที่ใช้ร่วมกันนั้นชัดเจน Groovy ชั้นเรียน
Gradle คลาสสิก build.gradle ไฟล์คือไฟล์ Groovy สคริปต์ ซึ่งเป็นเหตุผลว่าทำไมจึงอ่านได้กระชับกว่า Maven POM หรือ an มด ไฟล์สร้าง.
SoapUI Groovy ขั้นตอนสคริปต์และการยืนยันสคริปต์เป็นตัวขับเคลื่อนข้อมูลคำขอแบบไดนามิกและการตรวจสอบการตอบสนองแบบกำหนดเอง
สป็อค A Groovy เฟรมเวิร์กสำหรับการทดสอบที่มีบล็อก given-when-then และตารางข้อมูล ซึ่งใช้กันอย่างแพร่หลายสำหรับการทดสอบหน่วยของ JVM
อีสไทรเสิร์ชและเกรลส์ Grails สร้างเว็บแอปพลิเคชันแบบเต็มรูปแบบบน Groovyและเครื่องมือข้อมูลหลายอย่างยอมรับ Groovy สำหรับการเขียนสคริปต์แบบกำหนดเอง

In การทดสอบอัตโนมัติ สำหรับทีมต่างๆ เรื่องนี้สำคัญเป็นสองเท่า: งาน CI ที่รันชุดทดสอบและตัวการทดสอบเองอาจมีความสำคัญทั้งคู่ Groovyดังนั้นภาษาเดียวจึงครอบคลุมทั้งการเชื่อมต่อไปป์ไลน์และตรรกะการตรวจสอบ

Groovy vs Java

Groovy Java
ตัวแก้ไขการเข้าถึงเริ่มต้นคือ public ดังนั้นเมธอดที่ไม่มีตัวแก้ไขจะสามารถเข้าถึงได้จากภายนอกคลาสและแพ็กเกจของมัน ตัวแก้ไขการเข้าถึงเริ่มต้นคือ package-private ดังนั้นฟิลด์ เมธอด และคลาสที่ไม่มีตัวแก้ไขจะมองเห็นได้เฉพาะภายในแพ็กเกจของมันเท่านั้น
เมธอด getter และ setter สำหรับคุณสมบัติของคลาสจะสร้างขึ้นโดยอัตโนมัติ คุณต้องกำหนดเมธอด getter และ setter สำหรับฟิลด์ด้วยตนเอง
Groovy อนุญาตให้แทนที่ตัวแปรภายในสตริงที่อยู่ในเครื่องหมายคำพูดคู่ Java ไม่รองรับการแทรกค่าสตริง
ข้อมูลประเภทสินค้าเป็นตัวเลือกเพิ่มเติม ข้อมูลประเภทสินค้าจำเป็นต้องระบุ
ประโยคไม่จำเป็นต้องจบด้วยเครื่องหมายเซมิโคลอน ทุกประโยคจะจบด้วยเครื่องหมายเซมิโคลอน
Groovy ระบบจะห่อหุ้มสคริปต์ทุกตัวด้วยคลาส Script ที่สร้างขึ้นโดยอัตโนมัติ คุณต้องมีเมธอด main เพื่อทำให้คลาสสามารถเรียกใช้งานได้
ทุกอย่างเป็นสาธารณะและเปลี่ยนแปลงได้ตลอดเวลาโดยค่าเริ่มต้น แต่ @CompileStatic ฟื้น Java- ความเร็วระดับและการตรวจสอบ ทุกอย่างได้รับการคอมไพล์แบบคงที่และตรวจสอบในระหว่างการสร้างโปรแกรม

ตำนานเกี่ยวกับ Groovy

ตำนาน ความจริง
Groovy ใช้ได้เฉพาะสำหรับการเขียนสคริปต์เท่านั้น มันยอดเยี่ยมสำหรับการเขียนสคริปต์ แต่ก็สามารถคอมไพล์เป็นคลาสทั่วไปที่คุณสามารถนำไปใช้ในแอปพลิเคชัน JVM ใดก็ได้
Groovy มันเกี่ยวกับฟังก์ชันปิด (closures) เป็นหลัก ดังนั้นมันจึงเป็นภาษาการเขียนโปรแกรมเชิงฟังก์ชันนั่นเอง Groovy ยืมแนวคิดจากภาษาโปรแกรมเชิงฟังก์ชัน เช่น Lisp และ Clojure แต่โดยพื้นฐานแล้วยังคงเป็นภาษาโปรแกรมเชิงวัตถุ
Groovy เหมาะสำหรับใช้ในการพัฒนาแบบทดสอบนำ (Test Driven Development) เท่านั้น Groovy เหมาะอย่างยิ่งสำหรับการใช้งานร่วมกับ TDD ของ Spock แต่แน่นอนว่านั่นไม่ใช่เหตุผลเดียวในการใช้งาน
คุณต้องการเท่านั้น Groovy ถ้าคุณต้องการใช้ Grails Grails เป็นเฟรมเวิร์กสำหรับการพัฒนาเว็บที่มีประสิทธิภาพ แต่... Gradle, Jenkinsและสป็อคต่างก็ใช้ Groovy ปราศจากมัน.

ข้อเสียของการใช้ Groovy

  • เจวีเอ็ม และ Groovy สคริปต์เริ่มทำงานช้า ซึ่งจำกัดการใช้งานสำหรับการเขียนสคริปต์ระดับระบบปฏิบัติการอย่างรวดเร็ว
  • Groovy ยังไม่เป็นที่นิยมใช้กันอย่างแพร่หลายนอกกลุ่มผู้ใช้งาน JVM เป็นหลัก
  • ใช้งานไม่สะดวก Groovy หากไม่มี IDE ที่เข้าใจคุณสมบัติแบบไดนามิกของมัน
  • การจัดส่งแบบไดนามิกสามารถทำให้ Groovy โค้ดทำงานช้ากว่าโค้ดที่เทียบเท่ากัน Java รหัสเว้นแต่คุณจะสมัคร @CompileStatic.
  • Groovy โปรแกรมบางประเภทอาจต้องการหน่วยความจำมากกว่าโปรแกรมทั่วไป Java โปรแกรม
  • ความรู้เกี่ยวกับ Java ถือเป็นข้อกำหนดเบื้องต้นอย่างแท้จริง

เมื่อคุณรู้สึกสบายใจกับเรื่องนี้แล้ว Groovy ไวยากรณ์ ขั้นตอนต่อไปตามธรรมชาติคือระบบนิเวศรอบๆ เสริมสร้างรากฐานให้แข็งแกร่งด้วย Java เกี่ยวกับการสอนจากนั้นดูว่าอย่างไร Groovy สคริปต์เป็นตัวขับเคลื่อนการสร้างและการปรับใช้ใน Jenkinsเปรียบเทียบเครื่องมือสร้างกับ Maven และ มดอาปาเช่และสำรวจวิธีการ Groovy ข้อกล่าวอ้างเหล่านั้นสอดคล้องกับ Selenium และชุดทดสอบ API

คำถามที่พบบ่อย

Groovy เวอร์ชัน 5.0 รองรับ JDK 11 ขึ้นไป Groovy เวอร์ชัน 4.0 ยังคงรองรับ JDK 8 และเวอร์ชันที่กำลังพัฒนาอยู่ Groovy เวอร์ชัน 6.0 รองรับ JDK 17 โปรดตรวจสอบตารางข้อกำหนดของระบบในหน้าดาวน์โหลด Apache อย่างเป็นทางการก่อนที่จะตัดสินใจเลือกเวอร์ชันใดเวอร์ชันหนึ่ง

ไม่ คำสั่ง groovy จะคอมไพล์ไฟล์ .groovy เป็นไบต์โค้ดในหน่วยความจำและรันทันที คุณยังสามารถคอมไพล์ล่วงหน้าได้ด้วย groovyc เมื่อคุณต้องการไฟล์ .class ที่นำกลับมาใช้ใหม่ได้เพื่อบรรจุลงในแพ็กเกจ Java แอพลิเคชัน

ใช่แล้ว Apache Groovy ซอฟต์แวร์นี้เผยแพร่ภายใต้ Apache License 2.0 ดังนั้นจึงอนุญาตให้ใช้งานเชิงพาณิชย์ ดัดแปลง และแจกจ่ายต่อได้โดยไม่มีค่าใช้จ่ายใดๆ เฉพาะข้อกำหนดเกี่ยวกับการให้เครดิตและการแจ้งเงื่อนไขใบอนุญาตตามปกติเท่านั้นที่ใช้กับการแจกจ่ายต่อ

Groovy เป็นภาษาโปรแกรมมิ่ง Grails เป็นเฟรมเวิร์กเว็บแบบฟูลสแต็กที่เขียนด้วยภาษาโปรแกรมนี้ Groovy. คุณสามารถใช้ได้ Groovy สำหรับการสร้างไฟล์ ไพพ์ไลน์ หรือการทดสอบโดยไม่ต้องติดตั้ง Grails แต่ Grails ก็ไม่อาจดำรงอยู่ได้หากปราศจาก Grails Groovy.

พวกมันจัดการกับสำนวนทั่วไปได้ดี เช่น closures, collection methods และ pipeline steps ควรรันสคริปต์ที่สร้างขึ้นใน groovyConsole ก่อนเสมอ เพราะบางครั้งโมเดลอาจผสมผสานกัน Java ไวยากรณ์ด้วย Groovy ใช้ทางลัดหรือคิดค้นวิธีการที่ไม่เคยมีมาก่อน

วางสแต็ก trace และสคริปต์ลงในผู้ช่วยเพื่อค้นหาสาเหตุที่เป็นไปได้ เช่น a Groovyอาจเกิดข้อผิดพลาด เช่น CastException, การอนุมัติ Sandbox ขาดหายไป หรือ Delegate ของ Closure ไม่ถูกต้อง ให้ถือว่าทุกข้อเสนอแนะเป็นสมมติฐาน และตรวจสอบกับบันทึกการสร้างจริงก่อน

สรุปโพสต์นี้ด้วย: