Lua:
การต่อสตริง
วิธีทำ:
ใน Lua, คุณสามารถต่อสตริงด้วยตัวดำเนินการ ..
มาดูตัวอย่างการใช้งาน:
local hello = "Hello, "
local world = "world!"
local greeting = hello .. world
print(greeting) -- ผลลัพธ์: Hello, world!
คุณยังสามารถติดต่อตัวเลขด้วยการเปลี่ยนแปลงข้อมูลเล็กน้อย:
local base = "I have "
local itemCount = 3
local message = base .. itemCount .. " apples"
print(message) -- ผลลัพธ์: I have 3 apples
จำไว้ว่า, การแปลงข้อมูลที่ไม่ใช่สตริงเป็นสิ่งที่ต้องทำเอง:
local score = 9001
local displayScore = "Your score is: " .. tostring(score)
print(displayScore) -- ผลลัพธ์: Your score is: 9001
การทดลองในระดับลึก
การต่อสตริงอาจดูเรียบง่าย แต่มันมีความสำคัญ ในวันแรกๆ ของ Lua, มันถูกออกแบบมาสำหรับระบบฝังตัว ซึ่งหมายความว่าต้องทำให้สิ่งต่างๆ เรียบง่าย นั่นคือเหตุผลที่ ..
ถูกเลือกสำหรับสตริง - มันเรียบง่ายแต่ได้ผล
ทางเลือกอื่นๆ กับ ..
ประกอบด้วย:
- ฟังก์ชั่น
table.concat
สำหรับอาร์เรย์ของสตริง, มีประสิทธิภาพมากขึ้นสำหรับการต่อสตริงจำนวนมาก - ฟังก์ชั่นของไลบรารีสตริง เช่น
string.format
, ที่ให้ความควบคุมมากขึ้นเกี่ยวกับการจัดรูปแบบ
ประสิทธิภาพการต่อสตริงของ Lua เป็นข้อกังวล, เฉพาะกับ ..
เนื่องจากการใช้งานแต่ละครั้งจะสร้างสตริงใหม่, ซึ่งอาจมีต้นทุนสูงในลูป ในการลดผลกระทบนี้, เมื่อต้องการต่อในลูป, ให้ใช้ตาราง:
local parts = {}
for i = 1, 10 do
parts[i] = "Part " .. i
end
local combined = table.concat(parts, ", ")
print(combined) -- ผลลัพธ์: Part 1, Part 2, ... Part 10
ภายใน, Lua จัดการสตริงใน hash table เพื่อปรับใช้หน่วยความจำให้เหมาะสมสุด, ดังนั้นสตริงที่เหมือนกันจะใช้พื้นที่จัดเก็บร่วมกัน แต่การต่อสตริงทำให้การใช้พื้นที่ร่วมกันนี้หายไปเนื่องจากสตริงใหม่ที่ถูกสร้างขึ้น
ดูเพิ่มเติม
- เอกสารประกอบการใช้งาน Lua เกี่ยวกับสตริง: https://www.lua.org/manual/5.4/manual.html#6.4
- การเขียนโปรแกรมใน Lua (หนังสือ): https://www.lua.org/pil/contents.html
- เคล็ดลับการจัดการสตริง: https://lua-users.org/wiki/StringLibraryTutorial