JShell คืออะไร?
JShell เป็นเครื่องมือแบบ REPL (Read-Eval-Print Loop) ที่นำมารองรับใน Java 9 เพื่อให้สามารถรันและประเมินโค้ด Java แบบง่ายๆ เช่น การประกาศตัวแปร คำสั่ง นิพจน์ และโปรแกรมเล็กๆ ได้โดยไม่ต้องใช้เมธอด main()
ตัวแปรสแครช (Scratch Variables) คืออะไร?
ใน JShell ค่าที่ส่งกลับมาจากการรัน snippet (ชุดคำสั่ง) จะถูกเก็บไว้ใน ตัวแปรสแครช โดยอัตโนมัติ ตัวแปรเหล่านี้จะถูกแทนด้วยสัญลักษณ์ $ ตามลำดับที่สร้างขึ้น ($1, $2, $3, ...)
เมื่อเราไม่ได้กำหนดผลลัพธ์ของนิพจน์ให้กับตัวแปรใดๆ JShell จะสร้างตัวแปรสแครชขึ้นมาเพื่อให้สามารถนำค่าที่ได้ไปใช้งานต่อได้ในภายหลัง
ตัวอย่างการสร้างตัวแปรสแครช
C:\Users\User>jshell | Welcome to JShell -- Version 9.0.4 | For an introduction type: /help intro jshell> 3+7 $1 ==> 10 jshell> 9-2 $2 ==> 7 jshell> 4*4 $3 ==> 16 jshell> 12/4 $4 ==> 3 jshell> 19%5 $5 ==> 4 jshell> String.valueOf($2) $6 ==> "7"
จากตัวอย่างข้างต้น จะเห็นว่ามีตัวแปรสแครชถูกสร้างขึ้น 6 ตัวแปร ($1 ถึง $6) สำหรับแต่ละนิพจน์ที่รัน
ตัวแปรที่ไม่ใช่สแครช (Non-Scratch Variables)
หากเราประกาศตัวแปรโดยระบุชื่อและชนิดข้อมูลชัดเจน ตัวแปรนั้นจะ ไม่ใช่ ตัวแปรสแครช เนื่องจากไม่สามารถอ้างอิงด้วย $ ได้
jshell> String nonScratch = "Tutorialspoint" nonScratch ==> "Tutorialspoint" jshell>
การแสดงตัวแปรทั้งหมดด้วยคำสั่ง /vars
คำสั่ง /vars จะแสดงรายการตัวแปรทั้งหมดใน session นั้น รวมทั้งตัวแปรสแครชและตัวแปรทั่วไป
jshell> /vars | int $1 = 10 | int $2 = 7 | int $3 = 16 | int $4 = 3 | int $5 = 4 | String $6 = "7" | String name = "Tutorialspoint" jshell>
สรุป
- ตัวแปรสแครชถูกสร้างโดยอัตโนมัติเมื่อไม่ได้กำหนดตัวแปรรับค่า
- ชื่อตัวแปรสแครชขึ้นต้นด้วย $ ตามลำดับ ($1, $2, ...)
- สามารถนำตัวแปรสแครชไปใช้ในนิพจน์ถัดไปได้ (เช่น
String.valueOf($2)) - ใช้คำสั่ง
/varsเพื่อดูตัวแปรทั้งหมดใน session