LUAの関数の最初の結果を無視するにはどうすればよいですか?
-
02-10-2019 - |
質問
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()))
)
所属していません StackOverflow