Lua の復習とかしてみる その 2
2.1
if 文の書き方。普通の構文。
「≠」は「 ~= 」と書く。
if bool1 then -- 処理 1 elseif bool2 then -- 処理 2 else -- 処理 3 end
2.2
while ループ。
while bool1 do if bool2 then break end end
for ループ。
ここで宣言している i のスコープは for の中だけ。
for i = 1, 10 do -- for i = 1, 10, 2 do って書き方とかも出来る print(i) end
repeat-until 文。
C/C++ で言うところの do-while 文。
repeat -- 何か処理 until bool
2.3
配列の話。
2.4
boolean の話。
2.5
合計を求めるプログラム。
本のサンプルをここまでの知識を使って微妙に改造。
list = { 310, 260, 270, 440 } sum = 0 for i = 1, table.getn(list) do sum = sum + list[i] end print(sum)
配列の 0 番目の要素にアクセスしようとしてて、なかなか動かなかったということは内緒。つい数分前に読んだ Lua の配列の通例の話をもう忘れているとかアホ過ぎる。
ちなみにこんな感じのエラーが返ってくる。
lua: 2_5.lua:4: attempt to perform arithmetic on field '?' (a nil value)
*追記
上のエラーなんだけど、気になって再現してみようと思った。
でも 0 番目の要素にアクセスしようとしても nil が返ってくるだけで、その後の処理はちゃんと動くね。
何が原因のエラーだったんだろう。
今となってはエラーを吐いたコードも存在せず、エラーの原因を追いようがない。
ありそうなのは文字コード絡みのエディタのバグかなぁ。
OCaml で遊んでたときもなったことあるし。
Lua の復習とかしてみる
Lua の復習と雑多なメモ。多分参考にはならないと思うけど、ログとして書いてみる。
テキストには、上野豊「入門 Lua プログラミング」を使用。
1.2 Lua の特徴
- 少ない知識でプログラムを組める
- 動作が軽い
- データが整理できる
上の 2 つは Lua の大きな特徴として有名だけど、3 番目の「データが整理できる」ってなんだっけ?
本文を読むと
データをうまく表現することによって、その内容を整理していくのに役立ちます。
とあるから、データ構造のことかな。テーブルの話と関係がありそう。
1.4
プログラムの実行の仕方。
1.5
文字列データの扱い方。
多分忘れるのでメモ。
dvd = "DVD player" cd = 'CD player B\' extra' md = 'MD "wantman"' mp3 = [[Bpple's jPod "klassic"]]
- 引用符で囲んだ文字列は、途中で改行するとエラーになる
- 二重角カッコで囲んだ文字列は、途中で改行すると改行も文字列に含まれる
らしい。
やってみよう。
linebreak1 = [[line1 line2 line3]] linebreak2 = [[ foo bar fizz buzz ]] print(linebreak1) print(linebreak2)
% lua kakko.lua line1 line2 line3 foo bar fizz buzz
おお、本当だ。
1.6
コメントの書き方。
kingaku = 200 -- 一行コメント --[[ コ メ ン ト ]]--
1.7
プログラムの実行単位の話。
文、ブロック、チャンク。
1.8
ついに来ました、テーブルさん。
cdplayer = { name = "cd player B", maker = "awawa", price = 10000, shop = "atom" } print(cdplayer.name)
各要素には「テーブル名.フィールド名」の形でアクセスする。
データは何でも置けるんだったかな。忘れた。
modf のこと
double modf(double x, double *iptr);
この関数って何で整数部分を double に格納するんだろ。
自分で使ったことないから具体的な例が思い浮かばないんだけど、その後の計算に便利だったりするのかな。
と思ったんだけど、 NaN が返ってくる可能性があるからか。
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/modf.3.html
NaN - Wikipedia
pvtrace のソースコード
パッと眺めた感じ、 pvtrace のソースは非常にシンプルなので、コードリーディングの入門用の題材としてはオススメかも知れない。
でも、あくまでも入門用としてオススメなだけで、読んでて勉強になるわけじゃないと思った。