Lua初めの一歩

August 22, 2016

ちょっとした必要性から、概要は理解しておこうと思い、Luaという言語を少し触ってみました。言語自体は、Homebrew でインストールできますし(一瞬でダウンロードされる)、記法もシンプルなのでとりあえず始めようという場合にはハードルはすごく低かったです。

The Programming Language Lua

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


Profile picture

Written by morizotter who lives and works in Tokyo building useful things. You should follow them on Twitter