Luaを開いて、「ちょっと待って、中括弧はどこ?」と思った時のことを覚えていますか?
ノートパソコンを閉じて、村で牛の放牧に行きたくなる言語があります。そして、Luaという言語は、古い友人と会ったかのような感覚を覚えます。余計な儀式もなく、五階建ての構造もなく、偶然に誰かの量子物理学の論文を開いたような感覚もありません。
ワールド・オブ・ウォークラフト、ロブロックス、またはGarry's ModのMODをプレイしたことがある場合、おめでとうございます。あなたはすでに間接的にLuaを使用しています。この言語は、依存関係の宇宙ステーションを展開することなく、何かを素早くスクリプト化する必要がある文字通りどこにでもあります。

ステップ0:インストール(スポイラー:簡単です)
Luaは、インストールが最も簡単な言語の1つです。ギガバイトのSDKも、「Javaのバージョンを847.3に更新してください」というメッセージもありません。
Linux/macOSの場合:
# Ubuntu/Debian
sudo apt install lua5.4
# macOS(Homebrew経由)
brew install luaWindowsの場合:
LuaBinariesをダウンロード 公式サイト またはscoopを介して配置します。
scoop install luaすべてが機能していることを確認します。
lua -vLua 5.4.7のようなものが応答として到着した場合、あなたはビジネスにいます。そうでない場合は、PATHを確認してください。
ステップ1:こんにちは、世界! (イニシエーションの儀式)
ファイル hello.lua を作成して、次のように記述します。
print("Hello, World!")開始:
lua hello.luaすべて。一つ。たった一つの呼び出し。public static void mainなし、importなし、#include <iostream>なし。Luaはあなたの時間を尊重します。
比較のために、Javaでも同じことができます。
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}Luaはこれを次のように見ています。
「兄弟、なぜそんなに文字が多いのですか?print()して、先に進みましょう。」
ステップ2:変数は単に書くだけです
Lua では、変数の型を宣言する必要はありません。int、string、floatはありません。Luaは自分で理解します。
name = "Alexey"
age = 25
is_developer = true
print(name) -- Алексей
print(type(age)) -- number
print(type(name)) -- stringローカル変数は local を介して宣言され、これは良いトーンと見なされます。
local score = 100
local player = "Hero"なぜ localなのか?なぜなら、これがなければ変数はグローバルになり、大きなプロジェクトのグローバル変数は、アパートの鍵をドアマットの下に置いておくようなものだからです。便利なように思えますが、後で驚かれることになるでしょう。
ステップ3:条件—if、elseif、else、end
local hp = 30
if hp > 50 then
print("Everything is fine, we continue to fight")
elseif hp > 0 then
print("Be careful, HP is running out!")
else
print("Game Over. Respawn in 5 seconds")
end注意:{と}の代わりに、thenとendを使用します。最初は慣れないかもしれませんが、読みやすくなることがわかります。Luaは文字ではなく単語が好きです。
もう一つのポイントは、Luaには!=がないことです。代わりに、~=が使用されます。
if name ~= "Admin" then
print("Access denied")
endうん、チルダ。ただ受け入れて。
ステップ4:サイクル — 回転、回転
while:
local i = 1
while i <= 5 do
print("Iteration: " .. i)
i = i + 1
endちなみに、..はLuaの文字列の連結です。+でもconcat()でもなく、単なるコロンです。
for:
for i = 1, 5 do
print("Step " .. i)
endCODE_BLOCK_12__for-in (テーブルのバイパス用):
local fruits = {"apple", "banana", "mango"}
for index, fruit in ipairs(fruits) do
print(index .. ". " .. fruit)
endステップ5:機能—コマンドを書く
local function greet(name)
return "Hi, " .. name .. "! Welcome to Lua"
end
print(greet("Maria"))Luaの関数はファーストクラスの市民です。これらは変数に格納したり、引数として渡したり、他の関数から返したりできます。一般的に、ここでは機能的プログラミングは言葉ではありません。
local function apply(func, value)
return func(value)
end
local function double(x)
return x * 2
end
print(apply(double, 21)) -- 4242はすべての答えです。偶然?そうは思いません。
ステップ6:テーブル—Luaの心臓部
ここからがマジックの始まりです。Luaには配列も、オブジェクトも、辞書もありません。しかし、 表 — すべてを置き換える汎用データ構造:
-- Как массив
local colors = {"Red", "Green", "Blue"}
print(colors[1]) -- красный (индексация с 1!)
-- Как словарь
local player = {
name = "Warrior",
hp = 100,
level = 5
}
print(player.name) -- Warrior
print(player["hp"]) -- 100
-- Как объект с методами
function player:takeDamage(damage)
self.hp = self.hp - damage
print(self.name .. " received " .. damage .. " damage. HP: " .. self.hp)
end
player:takeDamage(25) -- Warrior получил 25 урона. HP: 75重要なポイント: Luaでのインデックスは0ではなく1から始まります。 はい、これはJavaScriptやPythonに慣れている場合に実存的な危機を引き起こすものです。しかし、あなたは慣れるでしょう。
ステップ7:ミニプロジェクト—テキストクエスト
すべてをまとめる時が来ました。これはちょっとしたテキストゲームです。
local function game()
print("=============================")
print(" CODE DUNGEON")
print("=============================")
print("")
print("You are standing in front of the entrance to a dark cave.")
print("A strange noise is heard inside...")
print("")
print("What are you doing?")
print("1 - Enter the cave")
print("2 - You go home to drink tea")
print("")
io.write("Your choice: ")
local choice = io.read()
if choice == "1" then
print("")
print("You enter and find... an ancient laptop!")
print("A file with Lua code is open on the screen.")
print("You start reading... and you become a programmer!")
print("")
print("🏆 VICTORY! +100 to programming skill")
elseif choice == "2" then
print("")
print("A wise choice. Tea is also important.")
print("But the cave will be waiting for you...")
print("")
print("☕ END. But you can always come back!")
else
print("")
print("Unknown command. The cave is confused.")
print("Try again!")
end
end
game()これを quest.lua に保存し、lua quest.lua を起動してください。おめでとうございます。Lua で最初のゲームを書きました。
次は何ですか?
Luaは、ゲーム開発(Love2D、Defold、Roblox)、組み込み開発、既存アプリケーションのプラグインやスクリプトの作成への扉を開く言語です。Luaは、軽くて速く、驚くほど強力です。
ここでは、いくつかの方向性をご紹介します。
Roblox Studio — ゲームを作って収入を得たい場合
Love2D — インディーゲーム向けのミニマリストな2Dエンジン
Neovim — Lua で書かれた構成とプラグイン
OpenResty/Nginx — 高負荷のWebサーバー用Lua
Embedded/IoT — Luaはマイクロコントローラー(NodeMCU、ESP8266)で動作します
このフォーマットが気に入って、さらに進めたい場合は、 コディック. このアプリケーションでは、PythonやJavaScriptからHTML、CSSなどの技術まで、プログラミングをゼロから学ぶことができます。200ページもの単純な理論ではなく、練習を伴うわかりやすいレッスンだけで、何を書いたのか、なぜ書いたのかを実際に理解できます。
コディック スケジュールや長いコースに縛られることなく、自分のペースで、スマートフォンやパソコンで学習したい人のために特別に作成されています。
また、当社には テレグラムチャンネル 2000人以上の開発者からなるコミュニティで、プログラミングに関する役立つ投稿、タスクの分析、開発の世界のニュースが定期的に公開されています。コーヒーを待つ間でも、素材を繰り返し、トピックに沿った状態を維持するのに最適な方法です。
合計
Luaは、プログラミング言語があなたを脅かそうとしないまれなケースです。それはミニマリストで論理的であり、知り合った最初の数分から実際に作業コードを書くことができます。何か新しいことを試したいと長い間考えていたり、プログラミングへの簡単な入り口を探しているなら、Luaは素晴らしい選択肢です。
