
「Luaコード例#7:Luaで数値を用いたfor文でループ処理を行う」では数値を用いたfor文を扱ったが、ここでは汎用のfor文を用いて配列(としてのテーブル)の各要素に対するループ処理を行う。
- 配列としてのテーブルの各要素に対するループの形
- コード例
配列としてのテーブルの各要素に対するループの形
for [番号の変数], [要素の変数] in ipairs ([配列としてのテーブル]) do
end
「for」の後ろには2つの変数名をコンマ区切りで記述し
- 1つ目の名前の変数は要素の番号(1から始まり1ずつ増える)
- 2つ目の名前の変数は要素の内容
として「do」と「end」の間で参照できる。下は簡単な例。
$ lua -e "mon = {'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'}; for i, m in ipairs (mon) do print (('%s は %2d月'):format (m, i)) end"
Jan は 1月
Feb は 2月
Mar は 3月
Apr は 4月
May は 5月
Jun は 6月
Jul は 7月
Aug は 8月
Sep は 9月
Oct は 10月
Nov は 11月
Dec は 12月
コード例
下の例もプログラムの構造としては上の例と同様だが、「million」「billion」「trillion」のような、大きな数に付く名前(short scale
*1による)とその指数表記,生の値の「0」と「,」を用いた表記を並べて表示する。
[任意]ファイル名: 008_ipairs.
lua エンコーディング:
UTF-8
do
local shortscale = {'million', 'billion', 'trillion',
'quadrillion', 'quintillion', 'sextillion',
'septillion', 'octillion', 'nonillion',
'decillion', 'undecillion', 'duodecillion',
'tredecillion'}
for i, s in ipairs (shortscale) do
print (('%02d: 1 %s (1.0e+%d) は 1,%s です'):format (i,
s,
3 * (i + 1),
('000'):rep (i + 1, ',')))
end
end
下は実行結果。
01: 1 million (1.0e+6) は 1,000,000 です
02: 1 billion (1.0e+9) は 1,000,000,000 です
03: 1 trillion (1.0e+12) は 1,000,000,000,000 です
04: 1 quadrillion (1.0e+15) は 1,000,000,000,000,000 です
05: 1 quintillion (1.0e+18) は 1,000,000,000,000,000,000 です
06: 1 sextillion (1.0e+21) は 1,000,000,000,000,000,000,000 です
07: 1 septillion (1.0e+24) は 1,000,000,000,000,000,000,000,000 です
08: 1 octillion (1.0e+27) は 1,000,000,000,000,000,000,000,000,000 です
09: 1 nonillion (1.0e+30) は 1,000,000,000,000,000,000,000,000,000,000 です
10: 1 decillion (1.0e+33) は 1,000,000,000,000,000,000,000,000,000,000,000 です
11: 1 undecillion (1.0e+36) は 1,000,000,000,000,000,000,000,000,000,000,000,000 です
12: 1 duodecillion (1.0e+39) は 1,000,000,000,000,000,000,000,000,000,000,000,000,000 です
13: 1 tredecillion (1.0e+42) は 1,000,000,000,000,000,000,000,000,000,000,000,000,000,000 です
使用したバージョン:
本日の猫: