লোড হচ্ছে…

অনলাইন Lua কম্পাইলার ও প্লেগ্রাউন্ড

ব্রাউজার-ভিত্তিক কম্পাইলার ও প্লেগ্রাউন্ড, Lua, Progsity IDE।

Lua সম্পর্কে

Lua ছোট্ট একটা scripting language, বানানোই হয়েছে অন্য program এর ভেতরে বসানোর জন্য। Roblox এর game, World of Warcraft এর add-on, Neovim editor, এমনকি অনেক network device এর script ও Lua তে লেখা। পুরো language টা ছোট একটা manual এ ধরে যায়। Data structure একটাই, table, সেটা দিয়েই array, map আর object এর কাজ চলে।

এই playground এ sandbox এর ভেতরে Lua র মূল interpreter চলে। Integer এখানে 64 bit এর, float থেকে আলাদা। String এর নিজস্ব pattern matching আছে, আর function কে value র মতোই অন্য জায়গায় পাঠানো বা return করা যায়।

Language টা ছোট বলে closure, coroutine আর metatable শেখার জন্য জায়গাটা ভালো, মাঝখানে কোনো framework এসে দাঁড়ায় না।

কীভাবে ব্যবহার করবেন

  1. File এর একদম উপর থেকেই Lua লিখুন, main function বলে কিছু নেই। Variable declare করুন local দিয়ে।
  2. stdin panel এর input পড়ুন io.read দিয়ে: পুরো line এর জন্য "l", সংখ্যার জন্য "n"।
  3. Run চাপুন। Syntax error থাকলে কিছু চলার আগেই line সহ জানিয়ে দেবে।

প্রশ্নোত্তর

এটা কোন Lua?›

Lua 5.4, PUC-Rio র মূল interpreter। এটা LuaJIT নয়, তাই // দিয়ে integer ভাগ আর <const> এর মতো 5.4 এর feature গুলো চলে।

Array কি 1 থেকে শুরু হয়?›

হ্যাঁ, নিয়মটা এরকমই। Length বের করার # আর standard library র function গুলো 1 থেকে গোনে।

require দিয়ে module আনা যায়?›

Standard library গুলো (string, table, math, io, os, coroutine, utf8) আগে থেকেই load করা। LuaRocks এর package install করা নেই, আর program মানে একটাই file।

10 / 2 লিখলে 5.0 আসে কেন?›

Lua 5.4 এ / সবসময় float দেয়। Integer চাইলে // ব্যবহার করুন।

এখানে Lua run করা কি ফ্রি?›

হ্যাঁ, account ও লাগে না। Sign in করলে snippet save করা আর share link পাওয়া যায়।

কোড উদাহরণ

উপরের এডিটরে উদাহরণ লোড করতে “এটি চেষ্টা করুন” ট্যাপ করুন।

  • Table sort

    local nums = {3, 1, 4, 1, 5, 9}
    table.sort(nums)
    print(table.concat(nums, " "))
  • দুটো সংখ্যা পড়া

    local a, b = io.read("n", "n")
    print(a + b)
  • Closure দিয়ে counter

    local function counter()
      local n = 0
      return function()
        n = n + 1
        return n
      end
    end
    
    local tick = counter()
    print(tick(), tick(), tick())
  • String pattern দিয়ে শব্দ

    for word in ("to be or not to be"):gmatch("%a+") do
      io.write(word:upper(), " ")
    end
    print()