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 เพื่อปรับใช้หน่วยความจำให้เหมาะสมสุด, ดังนั้นสตริงที่เหมือนกันจะใช้พื้นที่จัดเก็บร่วมกัน แต่การต่อสตริงทำให้การใช้พื้นที่ร่วมกันนี้หายไปเนื่องจากสตริงใหม่ที่ถูกสร้างขึ้น

ดูเพิ่มเติม