ちょっとした必要性から、概要は理解しておこうと思い、Luaという言語を少し触ってみました。言語自体は、Homebrew でインストールできますし(一瞬でダウンロードされる)、記法もシンプルなのでとりあえず始めようという場合にはハードルはすごく低かったです。
Lua って?
公式 HP: The Programming Language Lua
Wikipedia: Lua(日本語)
- いわゆる汎用スクリプト言語。Perl、Python、Ruby と比較して高速に動作する。
- 理念は、簡素、高効率、高移植性。
- 動的型付け言語。
- Pascal によく似た構文を採用している。
- コルーチンをサポートしている。
- 数値型は整数と浮動小数点数の区別がない。
- いろんな言語と組み合わせて使える。
- グルー(糊)言語と言われることもある。
- さまざまなプラットフォームで利用できる。
- リオ・デ・ジャネイロの大学で開発され、言語名はポルトガル語で「月」に由来する。
- メモリ管理を自動で行う。
インストール
$ brew install lua
Hello, World
$ lua
lua
コマンドを打つとすぐに、対話的に書きはじめることができます。
例えばこんな感じですね。
> print(“Hello World”) Hello World
ファイル
ファイルを作りたい場合は、.lua
とファイル名につけます。実行時には、$ lua xxx.lua
とやるだけです。
最初に階乗を計算するコードを書いてみます。
#!/usr/bin/env lua
function fact(n)
if n == 0 then
return 1
else
return n \* fact(n - 1)
end
end
print("enter a numbrer: ")
a = io.read("\*number")
print(fact(a))
シンプル!
コメント
初めてですこの書き方。
\--\[\[
コメント
\]\]
型
基本型は下記 8 種類。ちょっとした特徴も併記してみます。
-
nil
- 非値(non-value)をあらわす。変数を宣言した直後は nil となっている。
-
boolean
- true/false. 0 と空文字は true
-
number
- 実数(倍精度浮動小数点数)を表す。Lua に整数型はない。
-
string
- 文字列連結は
..
ex:print('a' .. 'b') -> ab
- 文字列連結は
-
userdata
- C の任意のデータを Lua の変数に格納することができる(どういうことだろう)。
-
function
- ファーストクラスの値なので、変数に格納したり、他の関数への引数として渡したり、返り値にすることができる。
- thread
-
table
- 可変長の連想配列。実質的に Lua の唯一のデータ構造化機構。
- もっとも単純なコンストラクタ式は
a = {}
- 配列を表現するには整数をキーにする。 配列のインデックスは 1 から始まるのが慣例 。
#
が要素の数を返す。 ex:print(a[#a]) -- リストaの最後の要素を出力
Atom エディタ
エディタは、Atomを使っているのですが、とりあえず、language-luaを入れておくと、シンタックスハイライトをしてくれるので便利です。
参考図書
Programming in Lua プログラミング言語 Lua 公式解説書を使いました。ちょっと古いのですが、どんな言語かもわからないのに最新版の英語を読むのはちょっと僕にとってはハードルが高かったのでこちらにしました。