お問い合わせを送信いただきありがとうございます!当社のスタッフがすぐにご連絡いたします。
予約を送信いただきありがとうございます!当社のスタッフがすぐにご連絡いたします。
コース概要
Lua 入門
- 歴史の概要
- Lua の目標、特徴、非目標
- Lua ドキュメントとチュートリアルのリソース
- Lua インタープリターのインストール方法
- LuaRocks のセットアップと使用方法
基本的な構文と意味論
- 識別子
- コメント、ブロックコメント
- グローバル変数と厳格性の強制
- ローカル変数
- 単体プログラム、プログラム引数
- コンパイル単位、チャンク、式、セミコロン
データ型とデータ構造
- 基本型: nil, boolean, number, string
- オブジェクト型: function, userdata, thread, table
- 参照/オブジェクト vs 基本値
- Lua におけるテーブルの重要性
テーブルとその多用途性の入門
- テーブルとしての連想配列
- テーブルとしての数値配列、シーケンス
基本的な制御構造
- if then elseif else end
- while ループ
- repeat ループ
- 単純な for ループ
エラーハンドリング
- 戻り値 vs 例外
- 戻り値を例外に変換する方法
- 例外を戻り値に変換する方法
- エラーレベル
例のプログラム
- 多項式評価
- 幅優先探索
- 追加の演習問題
関数についての詳細
- 名前付き引数
- オブジェクト指向呼び出し
- クロージャー
- カリー化
- 末尾呼び出し
- 複数の代入と戻り値
- 可変引数
イテレータとコルーチン
- 汎用 for ループ
- 状態のない vs 状態のあるイテレータ
- イテレータとコルーチンの違い
メタテーブルとメタメソッド
- set の例
- __tostring メタメソッド
- 算術メタメソッド
- __index, __newindex メタメソッド
- __len メタメソッド
モジュールとパッケージ
- モジュールの使用方法
- モジュールの作成方法
- モジュールをパッケージに整理する方法
高度なテーブル
- キューとスタック用のテーブル
- グラフを記述するテーブル
- 行列としてのテーブル
- リンクリストとしてのテーブル
- 文字列バッファ
例を通じたメタテーブル
- プロキシ
- 読み取り専用
- メモ化
- メモ化を用いた動的計画法
- Fibonacci 数列の例
環境
- グローバル変数と環境の関係
- 自由変数
- _ENV テーブルと _G テーブル
モジュールについての詳細
- モジュール作成の異なるアプローチ
- 動作を変更するモジュール
- モジュール初期化と引数
- 環境を使用して安全なモジュールを実装する方法
高度なイテレータとコルーチン
- プロデューサー、コンシューマー、フィルター
- コルーチンをラップしてイテレータを得る方法
- リンクリスト用の状態のないイテレータ
Ecosystem への貢献
- MoonRocks へのパッケージアップロード
Lua における関数型プログラミング
- map 関数
- reduce / fold 関数
オブジェクト指向プログラミング
- オブジェクト指向の異なるアプローチ
- 継承の異なるアプローチ
- 例
Lua 標準ライブラリの解説
コンパイル
- コンパイル
- 評価 (Eval)
- 環境との関係
- バイナリチャンク
ガベージコレクション
- 弱テーブル
- ファイナライザ、__gc メタメソッド
Lua バイトコードと仮想マシン
- ソースコードからバイトコードの生成
- バイトコードの読み込みと解析
- Lua VM のソースコードの簡単な紹介
C モジュール
- Lua から C を呼び出す方法
- C モジュールの検索パスと読み込み
C から Lua を呼び出す
- スタック
- エラーハンドリング
- 継続 (Continuations)
C からの Lua 値と型の処理
- 配列
- 文字列
- Userdata
- メタテーブル
- オブジェクト指向呼び出し
- 軽量 Userdata (Light userdata)
メモリ管理
- アロケータ
- GC API
Lua におけるスレッド
- コルーチン vs スレッド
- 実際のマルチスレッディングと Lua 状態
要求
少なくとも1つの他のプログラミング言語へのなじみがあること。プログラミング経験があること。オプションで他のスクリプト言語に親しみがあれば、Lua の理解がより容易になります。
21 時間