タグ付けされた質問 「lua」


10
なぜ「コールバック関数」が必要なのですか?
私はその本を読んでいprogramming in Luaます。と言った クロージャーは、多くの状況で価値のあるツールを提供します。これまで見てきたように、これらはsortなどの高階関数の引数として役立ちます。クロージャーは、newCounterの例のように、他の関数を構築する関数にも役立ちます。このメカニズムにより、Luaプログラムは機能的な世界からの洗練されたプログラミング手法を組み込むことができます。クロージャーはコールバック関数にも役立ちます。ここでの典型的な例は、従来のGUIツールキットでボタンを作成するときに発生します。各ボタンには、ユーザーがボタンを押したときに呼び出されるコールバック関数があります。ボタンを押したときに、ボタンごとにわずかに異なる処理を行う必要があります。たとえば、デジタル計算機には、各桁に1つずつ、10個の同様のボタンが必要です。次のような関数を使用して、それぞれを作成できます。 function digitButton (digit) return Button{label = tostring(digit), action = function () add_to_display(digit) end} end を呼び出すdigitButtonとを返すように見えるのでaction(これによりクロージャが作成されます)、digit渡されたにアクセスできますdigitButton。 私の質問は: Why we need call back functions? what situations can I apply this to? 著者は言った: この例では、Buttonは新しいボタンを作成するツールキット関数であると想定しています。labelはボタンのラベルです。actionは、ボタンが押されたときに呼び出されるコールバッククロージャーです。コールバックは、digitButtonがタスクを実行した後、ローカル変数digitがスコープから出た後、長時間呼び出すことができますが、それでもこの変数にアクセスできます。 著者によると、同様の例は次のようになります。 function Button(t) -- maybe you should set the button here return t.action -- so …

7
関数は変更されていないパラメーターのみを返しますが、役に立ちませんか?
私が働いているプロジェクトでこの機能を見つけました: -- Just returns the text unchanged. -- Note: <text> may be nil, function must return nil in that case! function Widget:wtr(text) return text end 残念なことに、コーダーは社内で機能しなくなりました。何もしないが、呼び出されたパラメーターを返す関数を作成するのはなぜですか? この例では指定されていませんが、どのような場合でも、そのような関数の使用はありますか? のため function aFunction(parameter) return parameter end で終わる aFunction(parameter) == parameter なぜ私は aFunction(parameter) == whatIWantToCheck の代わりに parameter == whatIWantToCheck ?

2
Luaは整数と浮動小数点数の両方をどのように処理しますか?
私がプログラミングを覚えている限り、浮動小数点数を比較して平等にしないように教えられました。今、LuaのプログラミングについてLua を読んでいるとnumber、次のことがわかりました。 数値型は、実数(倍精度浮動小数点数)を表します。Luaには整数型は必要ありません。浮動小数点演算エラーについては誤解が広まっており、一部の人々は、単純な増分でさえ浮動小数点数で奇妙になることがあると恐れています。実際、整数を表すためにdoubleを使用すると、丸め誤差はまったくありません(数値が100,000,000,000,000を超えない限り)。具体的には、Lua数値は、丸めの問題なしで任意の長整数を表すことができます。さらに、最新のCPUのほとんどは、整数演算と同程度(またはそれ以上)の浮動小数点演算を実行します。 それはすべての言語に当てはまりますか?基本的に、倍精度浮動小数点を超えない場合、整数演算で安全ですか?または、質問のタイトルに沿って、Luaがそのnumberタイプで行う特別なことはありますか?整数型と浮動小数点型の両方としてうまく機能していますか?

2
拡張スクリプトはサンドボックスで実行する必要がありますか?
特に、これはlua(luajit-2.0)で記述されたゲーム拡張機能に関するものです。これらのスクリプトで実行できることを制限する必要があるかどうかを検討していましたが、おそらくすべきではないという結論に達しました。 正しくするのは難しいです。馬鹿げているように聞こえますが、私のサンドボックスがとにかく漏れやすくなる可能性があります。 私が考えることができる唯一の利点は、サードパーティのスクリプトを実行するときにユーザーにある程度の安心感を与えることです。 欠点は、拡張機能の作成者にとって非常に迷惑なことです。つまり、今のところ、私自身です(ゲームコンテンツはほとんどスクリプト化されます)。 実際にプレゼンテーションを行う前にこれを尋ねる理由は、サンドボックスを早期に追加するのは簡単ですが、自分自身にも前述の迷惑な制限を課すからです。ただし、最初にそれを続行し、後でサンドボックスが必要になったと判断した場合、問題が発生します(既に存在するスクリプトを書き直すか、何らかの信頼管理システムを導入する必要がありますそれは価値があるよりも多くのトラブルのようです)。

3
(Lua)ゲームスクリプトとはどういう意味ですか?
Luaは埋め込みスクリプト、特にスクリプト用のゲームによく使用されることを読みました。正確にどのように使用されているか想像するのは難しいと思います。なぜ、どの機能でどのオーディエンスに使用されているのか説明できますか? この質問は、特にLuaを取り上げているのではなく、Luaスクリプトと同様の目的を果たす埋め込みスクリプトを取り上げています。 エンドユーザーがカスタム調整を行うために使用されますか?ゲーム開発者がゲームロジック(レベル、AIなど)の作成を高速化するために使用されていますか?スクリプトはより高速になる可能性があるため、ゲームフレームワークコードのスクリプトに使用されますか? 基本的に、私はこのようなスクリプトの使用法がプレーンな構成とフレームワークロジックとの間でどれほど深いかを考えています。そして、どのくらいのスクリプトが行われます。いくつかの構成行またはかなりの量?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.