質問

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

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

3番目の返品値に興味がない場合は、関数を呼び出すときにそれを無視することを選択できます。

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

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

3番目の返品値のみが必要な場合は、このコードを書くことができますが、クリーナーコードが存在するかどうか疑問に思っていました。

_, _, c = unpack({'one', 'two', 'three'})
役に立ちましたか?

解決

使用できます 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())))

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top