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