Clojure:
การอ่านอาร์กิวเมนต์จากคำสั่งลำดับ
วิธีทำ:
ใน Clojure, คุณสามารถดึงอาร์กิวเมนต์บน command line ได้โดยใช้ *command-line-args*
นี่คือตัวอย่างง่ายๆ:
;; สมมติโค้ดนี้อยู่ในไฟล์ที่ชื่อว่า `echo.clj`
(defn -main [& args]
(println "คุณได้ใส่:" args))
;; เพื่อรัน: `clojure echo.clj arg1 arg2 arg3`
ผลลัพธ์ตัวอย่าง:
คุณได้ใส่: (arg1 arg2 arg3)
ต้องการประมวลผลหรือไม่? ใช้ฟังก์ชั่นการรวบรวมของ Clojure
(defn -main [& args]
(let [processed-args (mapv str/upper-case args)]
(println "เปลี่ยนเป็นตัวพิมพ์ใหญ่:" processed-args)))
;; ตอนนี้, การรัน `clojure echo.clj hello world` จะแสดงผล:
ผลลัพธ์ตัวอย่าง:
เปลี่ยนเป็นตัวพิมพ์ใหญ่: ["HELLO" "WORLD"]
ลงลึก
*command-line-args*
เป็น var ใน Clojure, ถูกตั้งค่าเป็นลำดับของอาร์กิวเมนต์ที่ส่งไปยังสคริปต์ มันเป็นอย่างนี้มาตั้งแต่ต้นยุคของ Clojure, แสดงให้เห็นว่า Clojure มองอาร์กิวเมนต์บน command line เป็นสิ่งสำคัญ
มีทางเลือกอื่นหรือ? กลไกของ Java สำหรับการดึงอาร์กิวเมนต์บน command line ก็ทำงานใน Clojure ได้เช่นกัน, ขอบคุณความสามารถในการทำงานร่วมกัน แต่นั่นยากกว่าในการใช้งาน
สำหรับรายละเอียดในการทำงาน, เมื่อ Clojure เริ่มต้น, มันจะวิเคราะห์อาร์กิวเมนต์และเก็บไว้ใน *command-line-args*
สคริปต์ของคุณจากนั้นสามารถทำอะไรกับมันก็ได้—วิเคราะห์, ทอดทิ้ง, แปลง, คุณตั้งชื่อมัน
ดูเพิ่มเติม
- เครื่องมือ CLI อย่างเป็นทางการของ Clojure: https://clojure.org/guides/deps_and_cli
- Clojure จากพื้นฐานไปถึงการเขียนสคริปต์บน command line: https://aphyr.com/posts/305-clojure-from-the-ground-up-command-line
- ClojureDocs บน command-line-args: https://clojuredocs.org/clojure.core/command-line-args