次のように文字列をテーブルに挿入するとします。
table.insert(tbl, mystring)
これは、:mystring
で出現するすべての「a」を「b」に置き換えることによって生成されinput
ます。
mystring = string.gsub(input, "a", "b")
gsub
2つの結果を返すため、2つを1つのステートメントに結合する明白な方法は機能しません。
table.insert(tbl, string.gsub(input, "a", "b")) -- error!
-- (second result of gsub is passed into table.insert)
これは、複数のリターン値をサポートするために支払われる価格だと思います。問題は、最初の戻り値だけを選択するための標準の組み込みの方法があるかどうかです。私が見つけたときselect
、それはまさにそれがしたことだと思いましたが、残念ながら、それは実際にはN以降のすべての結果を選択するので、このシナリオでは役に立ちません。
select
これで、自分自身を次のように定義できることがわかりました。
function select1(n, ...)
return arg[n]
end
table.insert(tbl, select1(1, string.gsub(input, "a", "b")))
しかし、これを行うための組み込みの方法を期待しているので、これは正しく見えません。
だから、私はいくつかの組み込みの構造が欠けていますか?そうでない場合、Lua開発者は別の変数を使用して正しい引数を抽出したり、独自のselect1
関数を記述したりする傾向がありますか?