入門Luaプログラミング第3章 部品を作ろう

昨日に続いて今夜は第3章を。関数、ローカル変数、文字列などの章です。

関数宣言

関数は"function 〜 end"で宣言し、値は"return"で返します。returnはC言語などと同じく、その場で関数を抜けます。

> function times(op1, op2)
>>   return op1 * op2
>> end
> print(times(1, 2))
2


上記の構文は実は"関数名 = function (引数) end"のシンタックスシュガーらしいですが……

> minus = function (op1, op2)
>>   return op1 - op2
>> end
> print(minus(2, 1))
1

ローカル変数

ローカル変数は"local 変数名"で宣言します。localを先頭に付けずに宣言した場合、グローバル変数になるので以下のような記述をすると

> function hoge()
>>   if (value == nil) then
>>     value = 1
>>   end
>>   print(value)
>> end
> hoge()
1
> value = 1000
> hoge()
1000

関数内で宣言したとしてもグローバル変数になります…… ああ恐ろしい。


localを付けて宣言した場合は

> function moge()
>>   local a, b
>>   a = 1
>>   b = 2
>>   print(a)
>>   print(b)
>> end
> moge()
1
2
> a = 3
> b = 4
> moge()
1
2
> print(a)
3
> print(b)
4

値が書き換えられたりすることはなくなります。

文字列の連結

文字列の連結は"+"ではなく".."を使います。

> print("え" .. "び")
えび
> str1 = "ls"
> str2 = " -la"
> print(str1 .. str2)
ls -la


第3章はほかに文字列ライブラリの関数について書いてあるのですが…… (string.formatなど)
…まあ、必要なときにドキュメントを読めばいいので今はスルーで。


以上、入門Luaプログラミング第3章でした。