برنامه نویسی

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()
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نتیجه گیری

درک اساسی لوا چندان سخت نبود. در حالی که بله، من جنبه هایی مانند حلقه ها، جریان کنترل یا عملیات باینری را پوشش ندادم، خواندن کتابچه راهنمای کاربر و کتاب زمینه کافی برای درک مفاهیم اصلی را برای من فراهم کرد.

مایلم از انجمن روزتا کد برای مشکلات و راه حل هایشان تشکر کنم. بدون آنها درک این ویژگی های اصلی زبان برای من بسیار دشوارتر خواهد بود.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا