Luaプログラム設計変長パラメータ
Luaの関数はまた、異なる数の実パラメータを受け入れることができる.たとえば、printを呼び出すと、1つ、2つまたは複数の実パラメータが入力されます.
パラメータの3点(...)この関数が異なる数の実パラメータを受け入れることができることを示します.この関数が呼び出されると、そのすべてのパラメータが収集され、この部分で収集された実パラメータはこの関数の「長くなるパラメータ」と呼ばれます.
1つの関数が彼の変長パラメータにアクセスするには、3つのポイント(...)が必要です.ただし、このときの3点を1つの式として使用します(上記).式「...」の動作は、現在の関数のすべての変長パラメータを返す複数の戻り値を持つ関数に似ています.
通常、1つの関数は、その変長パラメータを巡回する際に式{...}を使用するだけで、これはtableにアクセスするように、すべての長くなるパラメータにアクセスします.
関数selectは、変長関数にnil値がある場合にアクセスします.
selectを呼び出す場合は、固定された実パラメータselectorと一連の変長パラメータを入力する必要があります.selectorが数値nの場合、selectはn番目の可変実パラメータを返します.そうでない場合、selectorは文字列「#」のみであり、selectは長くなるパラメータの合計数を返します.
function add(...)
local s = 0
for i, v in ipairs{...} do --> {...}
s = s + v
end
return s
end
print(add(3,4,5,6,7)) --->25
パラメータの3点(...)この関数が異なる数の実パラメータを受け入れることができることを示します.この関数が呼び出されると、そのすべてのパラメータが収集され、この部分で収集された実パラメータはこの関数の「長くなるパラメータ」と呼ばれます.
1つの関数が彼の変長パラメータにアクセスするには、3つのポイント(...)が必要です.ただし、このときの3点を1つの式として使用します(上記).式「...」の動作は、現在の関数のすべての変長パラメータを返す複数の戻り値を持つ関数に似ています.
function fwrite(fmt, ...) --->3 fmt。 , 。
lua , ( ) 。
return io.write(string.format(fmt, ...))
end
fwrite() --->fmt = nil, 。
fwrite("a") --->fmt = "a", 。
fwrite("%d%d", 4, 5) ---->fmt = "%d%d", = 4 5
通常、1つの関数は、その変長パラメータを巡回する際に式{...}を使用するだけで、これはtableにアクセスするように、すべての長くなるパラメータにアクセスします.
関数selectは、変長関数にnil値がある場合にアクセスします.
selectを呼び出す場合は、固定された実パラメータselectorと一連の変長パラメータを入力する必要があります.selectorが数値nの場合、selectはn番目の可変実パラメータを返します.そうでない場合、selectorは文字列「#」のみであり、selectは長くなるパラメータの合計数を返します.
for i =1 ,select("#", ...) do
local arg = select(i, ...) ---> i 。
< >
end