Clojure:
การต่อสตริง

วิธีทำ:

Clojure ทำให้การต่อเชือกข้อความเป็นเรื่องง่ายด้วยฟังก์ชัน str ลองดูกันเลย:

;; การต่อข้อความง่าย ๆ ด้วยฟังก์ชัน str
(str "Hello, " "world!")
;; => "Hello, world!"

;; การต่อหลาย ๆ ข้อความ
(str "Clojure" " is" " awesome!")
;; => "Clojure is awesome!"

;; การรวมข้อความและค่าอื่น ๆ
(str "The answer is " 42)
;; => "The answer is 42"

;; การใช้ apply เพื่อต่อลำดับของข้อความ
(apply str ["Join" " " "these" " " "strings!"])
;; => "Join these strings!"

ดีเลย, คุณได้เห็นมันในการทำงานแล้ว จำไว้เพียงว่า str ทำงานกับค่าใด ๆ โดยการเรียก toString บนค่านั้น ถ้าเป็น nil, คุณจะได้รับข้อความ “nil”

ลงลึก

ในประวัติศาสตร์, การต่อเชือกของข้อความได้มีมาตั้งแต่เราต้องการจัดการข้อความโดยเชิงโปรแกรม และแต่ละภาษานำเสนอวิธีของตนเอง Clojure ใน str เป็นส่วนหนึ่งของไลบรารีหลัก ถูกนำเข้ามาเพื่อความเรียบง่ายและเป็นเอกภาพ

มีทางเลือกอื่น ๆ สำหรับ str หรือ? ใช่! StringBuilder อาจมีประสิทธิภาพสูงขึ้นสำหรับการต่อเชือกข้อความจำนวนมาก โดยเฉพาะอย่างยิ่งในลูป Clojure สามารถเรียกเมธอดของ Java ได้ ดังนั้นคุณสามารถใช้ StringBuilder ได้ด้วย:

;; การใช้ StringBuilder เพื่อความมีประสิทธิภาพ
(let [builder (StringBuilder.)]
  (.append builder "This is")
  (.append builder " a more")
  (.append builder " efficient way!")
  (.toString builder))
;; => "This is a more efficient way!"

ทำไมไม่ใช้ StringBuilder ตลอดเวลาล่ะ? สำหรับงานประจำวันส่วนใหญ่, str นั้นเรียบง่ายและเร็วพอ ๆ StringBuilder โดดเด่นในสถานการณ์ที่มีประสิทธิภาพสูงกับการต่อเชือกหลายครั้ง

ในแง่ของการเนียน, เนื่องจาก Clojure ใช้งานบน JVM, จึงได้รับประโยชน์จากความสามารถในการจัดการสตริงของ Java อย่างไรก็ตาม, เช่นเดียวกับใน Java Strings, การเรียก str แต่ละครั้งสร้าง String ใหม่, ซึ่งอาจเป็นปัจจัยที่ต้องพิจารณาเรื่องหน่วยความจำ

ดูเพิ่มเติม