24

Lua 関数は複数の結果を返すことができます:

a, b, c = unpack({'one', 'two', 'three'})

3 番目の戻り値に関心がない場合は、関数を呼び出すときに無視することを選択できます。

a, b = unpack({'one', 'two', 'three'})

関数を呼び出すときに X の最初の要素を無視する同様の方法はありますか?

3 番目の戻り値だけが必要な場合は、このコードを記述できますが、よりクリーンなコードが存在するかどうか疑問に思っていました。

_, _, c = unpack({'one', 'two', 'three'})
4

1 に答える 1

25

機能を使用できますselect。の後にすべての引数を返しますindex。ここで、indexは に指定された最初の引数selectです。

例:

c = select(3, unpack({'one', 'two', 'three'}))
b, c = select(2, unpack({'one', 'two', 'three'}))
b = select(2, unpack({'one', 'two', 'three'}))   --discard last return value

_,_,c = f()とはいえ、ほとんどの場合、文章はきれいだと思います。select引数の数が事前にわからない場合、または関数呼び出しを連鎖させる場合に最も役立ちます (例: f(select(2, g())))

于 2010-07-02T13:08:56.073 に答える