Polyglot: Lua (بخش 1) – انجمن DEV

در پست قبلی خود در مورد دلایلی که می خواهم زبان برنامه نویسی بیشتری یاد بگیرم، زبان برنامه نویسی Lua و ابزار توسعه دهنده Lua صحبت کردم. اکنون زمان آن است که در واقع در Lua کدنویسی کنید!
برای این پست، من چندین کار اساسی کد روزتا را تکمیل خواهم کرد. هیچ چیز دیوانه کننده ای نیست، اما به اندازه ای است که من را با زبان و نحو آن آشنا کند. از آنجایی که Lua یک سینتکس نسبتا مینیمال و مستقیم دارد، من تکههای کد و خروجی را در اینجا پست میکنم، اما پیادهسازی را توضیح نمیدهم. برای کد منبع کامل، می توانید مخزن GitHub من را اینجا ببینید.
قالب GitHub
من یک الگوی GitHub ایجاد کردم تا پروژه های Lua خود را در آینده راه اندازی کنم. شما می توانید آن را در اینجا پیدا کنید. همانطور که ابزاری برای بهبود تجربه Lua خود پیدا می کنم، الگو را به روز می کنم.
مشکلات کد روزتا
حساب عدد صحیح
نتیجه: به من یاد داد که چگونه اعلانهای ورودی و عملکرد کاربر را دریافت کنم
local function sum(a, b)
return a + b
end
local function difference(a, b)
return a - b
end
local function product(a, b)
return a * b
end
local function int_quotient(a, b)
return a // b -- Rounds to negative infinity
end
local function remainder(a, b)
return a % b
end
local function exponentiation(a, b)
return a ^ b
end
local function main()
io.write("First number: ") -- Use with io.read for single line input
local a = io.read("n") -- Captures user input
io.write("Second number: ")
local b = io.read("n")
print("===")
print("Sum: " .. sum(a, b)) -- ".." syntax used to concatenate
print("Difference: " .. difference(a, b))
print("Product: " .. product(a, b))
print(
"Integer Quotient (rounds to negative infinity): " .. int_quotient(a, b)
)
print("Remainder" .. remainder(a, b))
print("Exponentiation: " .. exponentiation(a, b))
end
main()
مقایسه طول رشته
نتیجه: یاد گرفتیم که همه اشیا (از جمله آرایه ها) جداول هستند، چگونه جداول را مرتب کنیم، و چگونه روی آنها نمایه کنیم.
for
حلقه
local function main()
io.write("First string: ")
local a = io.read("l")
io.write("Second string: ")
local b = io.read("l")
io.write("Third string: ")
local c = io.read("l")
print("===")
local strings = { a, b, c } -- Loads strings into an array (implemented as a table)
table.sort(strings, function(foo, bar)
return #foo > #bar
end) -- Sort array based on string length
for _, s in ipairs(strings) do
print(#s, s) -- Print string size then string content
end
end
main()
نتیجه گیری
درک اساسی لوا چندان سخت نبود. در حالی که بله، من جنبه هایی مانند حلقه ها، جریان کنترل یا عملیات باینری را پوشش ندادم، خواندن کتابچه راهنمای کاربر و کتاب زمینه کافی برای درک مفاهیم اصلی را برای من فراهم کرد.
مایلم از انجمن روزتا کد برای مشکلات و راه حل هایشان تشکر کنم. بدون آنها درک این ویژگی های اصلی زبان برای من بسیار دشوارتر خواهد بود.