Learn in 10 minutes

Learn in 10 minutes

10 मिनट में Lua सीखें

मैं Lua हूं - एक सुपर हल्की प्रोग्रामिंग भाषा, दूसरे एप्लिकेशन में एम्बेड करने के लिए परफेक्ट। क्या तुम्हें पता है? ‘वर्ल्ड ऑफ वार्क्राफ्ट’ और Roblox जैसे गेम्स में मेरा इस्तेमाल होता है!

1. पहला Lua प्रोग्राम

चलो, बेसिक्स से शुरू करते हैं। hello.lua नाम की फाइल बनाओ और इसमें लिखो:

print("Hello, World!")

सेव करो और टर्मिनल में चलाओ:

lua hello.lua

तुम्हें दिखेगा:

Hello, World!

देखा कितना आसान! print() स्क्रीन पर टेक्स्ट दिखाने के लिए है।

2. बेसिक सिंटैक्स

मेरा सिंटैक्स बहुत सिंपल है:

-- यह सिंगल लाइन कमेंट है
print("नमस्ते दुनिया!")

--[[
यह मल्टी लाइन
कमेंट है
]]

याद रखने वाली बातें:

  • कमेंट्स: सिंगल लाइन --, मल्टी लाइन --[[ ]]
  • स्टेटमेंट्स: एक लाइन में एक कमांड, सेमीकोलन की जरूरत नहीं
  • केस: मैं केस सेंसिटिव हूं
  • स्पेस: स्पेस और न्यूलाइन से कोई फर्क नहीं पड़ता

3. वेरिएबल्स और डेटा टाइप्स

मैं डायनामिक टाइपिंग वाली हूं, टाइप डिक्लेयर करने की जरूरत नहीं:

-- डायरेक्ट असाइनमेंट
नाम = "Lua"
उम्र = 25
कमाल = true
पाई = 3.14159

-- मल्टीपल असाइनमेंट
x, y, z = 10, 20, 30

-- खाली वैल्यू nil होती है
खाली = nil

print("नाम:", नाम)
print("उम्र:", उम्र)
print("कमाल?:", कमाल)

मेरे डेटा टाइप्स:

  • nil: कोई वैल्यू नहीं
  • boolean: true या false
  • number: नंबर्स (इंटीजर और डेसिमल)
  • string: टेक्स्ट
  • table: मेरी सुपरपावर - arrays, dictionaries सब कुछ
  • function: फंक्शन्स (फर्स्ट क्लास सिटिजन)
  • userdata: C के लिए
  • thread: कोरूटीन्स

4. स्ट्रिंग ऑपरेशन्स

-- स्ट्रिंग बनाने के तरीके
str1 = "नमस्ते"
str2 = 'दुनिया'
str3 = [[मल्टीलाइन
टेक्स्ट]]

-- स्ट्रिंग जोड़ने के लिए ..
मैसेज = str1 .. " " .. str2
print(मैसेज)  -- आउटपुट: नमस्ते दुनिया

-- स्ट्रिंग लेंथ के लिए #
लंबाई = #"नमस्ते"
print(लंबाई)   -- आउटपुट: 6

-- स्ट्रिंग मेथड्स
टेक्स्ट = "hello world"
बड़ा = टेक्स्ट:upper()
छोटा = टेक्स्ट:lower() 
हिस्सा = टेक्स्ट:sub(1, 5)

print(बड़ा)    -- आउटपुट: HELLO WORLD
print(हिस्सा)      -- आउटपुट: hello

5. टेबल्स - मेरा सुपरपावर

टेबल्स मेरी सबसे बढ़िया फीचर हैं:

-- ऐरे की तरह (इंडेक्स 1 से शुरू)
फल = {"सेब", "केला", "चेरी"}
print(फल[1])  -- आउटपुट: सेब
print(फल[2])  -- आउटपुट: केला

-- डिक्शनरी की तरह
इंसान = {
    नाम = "राहुल",
    उम्र = 30,
    शहर = "दिल्ली"
}
print(इंसान.नाम)    -- आउटपुट: राहुल
print(इंसान["उम्र"])  -- आउटपुट: 30

-- मिक्स्ड भी चलेगा
मिक्स्डटेबल = {
    "सेब",
    "केला", 
    रंग = "लाल",
    संख्या = 5
}

-- टेबल ऑपरेशन्स
फल = {"सेब", "केला"}
table.insert(फल, "चेरी")  -- आखिर में जोड़ो
table.insert(फल, 2, "संतरा") -- दूसरे पोजीशन में डालो

print(table.concat(फल, ", "))  -- आउटपुट: सेब, संतरा, केला, चेरी

6. कंट्रोल स्ट्रक्चर्स

-- if स्टेटमेंट
उम्र = 18

if उम्र >= 18 then
    print("तुम वयस्क हो")
elseif उम्र >= 13 then
    print("तुम टीनएजर हो")
else
    print("तुम बच्चे हो")
end

-- while लूप
काउंटर = 1
while काउंटर <= 5 do
    print("काउंट:", काउंटर)
    काउंटर = काउंटर + 1
end

-- for लूप (न्यूमेरिक)
for i = 1, 5 do
    print("नंबर:", i)
end

-- for लूप (स्टेप के साथ)
for i = 10, 1, -2 do
    print("उल्टी गिनती:", i)
end

-- for लूप (टेबल्स के लिए)
फल = {"सेब", "केला", "चेरी"}
for इंडेक्स, फलनाम in ipairs(फल) do
    print(इंडेक्स, फलनाम)
end

इंसान = {नाम = "राहुल", उम्र = 30}
for की, वैल्यू in pairs(इंसान) do
    print(की, वैल्यू)
end

7. फंक्शन्स

-- बेसिक फंक्शन
function अभिवादन(नाम)
    return "नमस्ते, " .. नाम .. "!"
end

संदेश = अभिवादन("प्रिया")
print(संदेश)  -- आउटपुट: नमस्ते, प्रिया!

-- मल्टीपल रिटर्न वैल्यू
function गणन(a, b)
    return a + b, a - b, a * b, a / b
end

योग, अंतर, गुणनफल, भागफल = गणना(10, 5)
print("योग:", योग)        -- आउटपुट: योग: 15
print("अंतर:", अंतर) -- आउटपुट: अंतर: 5

-- अनाम फंक्शन (लैम्ब्डा)
गुणा = function(x, y)
    return x * y
end

परिणाम = गुणा(4, 5)
print(परिणाम)  -- आउटपुट: 20

-- फंक्शन को पैरामीटर की तरह
function ऑपरेशनचलाओ(x, y, ऑपरेशन)
    return ऑपरेशन(x, y)
end

परिणाम = ऑपरेशनचलाओ(6, 7, गुणा)
print(परिणाम)  -- आउटपुट: 42

8. मॉड्यूल्स

कोड को मॉड्यूल में ऑर्गनाइज करो। गणितउपकरण.lua बनाओ:

-- गणितउपकरण.lua
local गणितउपकरण = {}

function गणितउपकरण.जोड़(a, b)
    return a + b
end

function गणितउपकरण.गुणा(a, b)
    return a * b
end

return गणितउपकरण

मेन फाइल में यूज करो:

-- मुख्य.lua
local गणितउपकरण = require("गणितउपकरण")

परिणाम = गणितउपकरण.जोड़(10, 5)
print("जोड़ परिणाम:", परिणाम)  -- आउटपुट: जोड़ परिणाम: 15

परिणाम = गणितउपकरण.गुणा(4, 6)
print("गुणा परिणाम:", परिणाम)  -- आउटपुट: गुणा परिणाम: 24

9. एरर हैंडलिंग

-- pcall से एरर कैच करो
function ोखिमभराकाम()
    error("कुछ गड़बड़ हो गया!")
end

-- pcall प्रोटेक्टेड कॉल है
सफलता, परिणाम = pcall(जोखिमभराकाम)

if सफलता then
    print("सफल:", परिणाम)
else
    print("असफल:", परिणाम)
end

-- कस्टम एरर
function ाग(a, b)
    if b == 0 then
        error("शून्य से भाग नहीं हो सकता")
    end
    return a / b
end

सफलता, परिणाम = pcall(भाग, 10, 0)
if not सफलता then
    print("एरर:", परिणाम)
end

10. प्रैक्टिकल उदाहरण

-- सिंपल कैलकुलेटर
function कैलकुलेटर()
    print("🐮 सरल कैलकुलेटर")
    print("1. जोड़")
    print("2. घटाए") 
    print("3. गुणा")
    print("4. भाग")
    
    विकल्प = tonumber(io.read())
    print("पहला नंबर:")
    नंबर1 = tonumber(io.read())
    print("दूसरा नंबर:")
    नंबर2 = tonumber(io.read())
    
    if विकल्प == 1 then
        परिणाम = नंबर1 + नंबर2
        print("परिणाम:", परिणाम)
    elseif विकल्प == 2 then
        परिणाम = नंबर1 - नंबर2
        print("परिणाम:", परिणाम)
    elseif विकल्प == 3 then
        परिणाम = नंबर1 * नंबर2
        print("परिणाम:", परिणाम)
    elseif विकल्प == 4 then
        if नंबर2 ~= 0 then
            परिणाम = नंबर1 / नंबर2
            print("परिणाम:", परिणाम)
        else
            print("❌ शून्य से भाग नहीं")
        end
    else
        print("🤔 गलत विकल्प")
    end
end

-- यूज करने के लिए अनकमेंट करो
-- कैलकुलेटर()

-- फाइल ऑपरेशन्स
function ाइलपढ़ो(फाइलनाम)
    local फाइल = io.open(फाइलनाम, "r")
    if not फाइल then
        return nil, "फाइल नहीं खुल सकी"
    end
    
    local सामग्री = फाइल:read("*a")
    फाइल:close()
    return सामग्री
end

सामग्री, त्रुटि = फाइलपढ़ो("उदाहरण.txt")
if सामग्री then
    print("फाइल सामग्री:", सामग्री)
else
    print("त्रुटि:", त्रुटि)
end

समापन

मैं Lua बहुत अच्छी हूं! खासकर:

  • 🎮 गेम स्क्रिप्टिंग (बहुत सारे गेम्स में यूज होती हूं)
  • 🔧 एम्बेडेड डेवलपमेंट (हल्की होने के कारण)
  • ⚙️ कॉन्फिग फाइल्स और ऑटोमेशन
  • 🚀 हाई परफॉर्मेंस के लिए (LuaJIT के साथ)

मेरी खास बातें:

  • हल्की: बहुत कम जगह लेती हूं
  • तेज: LuaJIT से सुपर फास्ट
  • फ्लेक्सिबल: डायनामिक टाइपिंग + सुपर टेबल्स
  • पोर्टेबल: मोबाइल से सर्वर तक चलती हूं
  • एम्बेड करने में आसान: C/C++ के साथ बढ़िया काम करती हूं

और सीखना चाहते हो? ये ट्राई करो:

  • Lua स्टैंडर्ड लाइब्रेरी
  • कोरूटीन्स (कंकरंट प्रोग्रामिंग)
  • मेटाटेबल्स और मेटामेथड्स (OOP के लिए)
  • Lua C API
  • Love2D गेम डेवलपमेंट

मैं सीखने में आसान और बहुत पावरफुल हूं! 🚀