มันเป็นน้ำตาลประโยคสำหรับสคริปต์พื้นฐาน การละเว้นคำหลัก "def" จะทำให้ตัวแปรอยู่ในการเชื่อมโยงสำหรับสคริปต์ปัจจุบันและ groovy ปฏิบัติต่อมัน (ส่วนใหญ่) เหมือนกับตัวแปรที่กำหนดขอบเขตทั่วโลก:
x = 1
assert x == 1
assert this.binding.getVariable("x") == 1
การใช้คำหลัก def แทนไม่ได้ใส่ตัวแปรในการผูกสคริปต์:
def y = 2
assert y == 2
try {
this.binding.getVariable("y")
} catch (groovy.lang.MissingPropertyException e) {
println "error caught"
}
พิมพ์: "จับข้อผิดพลาด"
การใช้คีย์เวิร์ด def ในโปรแกรมที่มีขนาดใหญ่นั้นมีความสำคัญเนื่องจากช่วยกำหนดขอบเขตที่ตัวแปรสามารถพบได้และสามารถช่วยรักษา encapsulation ได้
หากคุณกำหนดวิธีในสคริปต์ของคุณจะไม่สามารถเข้าถึงตัวแปรที่สร้างขึ้นด้วย "def" ในเนื้อหาของสคริปต์หลักเนื่องจากไม่อยู่ในขอบเขต:
x = 1
def y = 2
public bar() {
assert x == 1
try {
assert y == 2
} catch (groovy.lang.MissingPropertyException e) {
println "error caught"
}
}
bar()
พิมพ์ "จับข้อผิดพลาด"
ตัวแปร "y" ไม่ได้อยู่ในขอบเขตภายในฟังก์ชั่น "x" อยู่ในขอบเขตที่ Groovy จะตรวจสอบการเชื่อมโยงของสคริปต์ปัจจุบันสำหรับตัวแปร ดังที่ฉันได้กล่าวไว้ก่อนหน้านี้เป็นเพียงน้ำตาลประโยคเพื่อให้สคริปต์ที่รวดเร็วและสกปรกสามารถพิมพ์ออกมาได้อย่างรวดเร็ว
แนวปฏิบัติที่ดีในสคริปต์ที่ใหญ่กว่าคือการใช้คำหลัก "def" เสมอดังนั้นคุณจะไม่พบปัญหาการกำหนดขอบเขตแปลก ๆ หรือรบกวนตัวแปรที่คุณไม่ต้องการ
new FileInputStream('Test.groovy').getChannel()
นำเข้า?