入門Luaプログラミング第7章 Luaの仕組み(後編)
眠くてできなかった部分、多値を返す関数やレキシカルスコープなどについて。あとコラムの高階関数も。
多値を返す関数
代入時に","で区切って同時に代入したり、変数同士を入れ替えたり。
> a, b = 1, 2 > print(a) 1 > print(b) 2 > a, b = b, a > print(a) 2 > print(b) 1
多値を返す関数を宣言して使ってみる。
> function a(str) >> return string.upper(str), #str >> end > b, c = a("abcdef") > print(b) ABCDEF > print(c) 6
多値で返ってきた!
Scalaだと……タプルにあたるのかな?
レキシカルスコープ
実を言うとレキシカルスコープという言葉は知っていても、どういう意味なのか知らなかったり。
えーと、変数のスコープ範囲のことなのかな。
> function abc() >> local qqq = 1 >> function def() >> local www = 2 >> print(qqq) >> print(www) >> end >> def() >> print(qqq) >> print(www) >> end > abc() 1 2 1 nil
変数wwwはdef関数の中で宣言されてるのでabc関数の後ろにあるprint(www)はnilになってるというか。……この理解であってるのかな。