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 ใหม่, ซึ่งอาจเป็นปัจจัยที่ต้องพิจารณาเรื่องหน่วยความจำ
ดูเพิ่มเติม
- เอกสารของฟังก์ชัน
strใน Clojure: Clojure Strings - เอกสารของ
StringBuilderใน Java: StringBuilder Docs - คู่มือ Clojure ที่เป็นประโยชน์สำหรับ
strและอื่น ๆ: Clojure for the Brave and True