Edited at

Lua初めの一歩

More than 1 year has passed since last update.

ちょっとした必要性から、概要は理解しておこうと思い、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公式解説書を使いました。ちょっと古いのですが、どんな言語かもわからないのに最新版の英語を読むのはちょっと僕にとってはハードルが高かったのでこちらにしました。