問題タブ [lua-5.3]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
lua - Lua 5.3で整数を浮動小数点数に保つ方法
Lua 5.2 では、すべての数値が double です。上記のコードの出力は次のとおりです。
Lua 5.3 は整数をサポートし、整数表現と浮動小数点表現の間で自動変換を行います。同じコードの出力:
float の結果を取得したい。2.0^64
動作しますが、リテラルでない場合はどうなりますか:
考えられる解決策の 1 つは、数値を1
: で除算することです。(n/1)^64
これは、/
除算ではオペランドが常に float に変換されるためですが、より洗練された解決策を探しています。
Lua 5.3.0 (work2)でテスト済み。
c - lua_Integer および lua_createtable (テーブルサイズ制限)
Lua 5.3 では、C API のテーブル関連の関数は receive と returnlua_Integer
です。
しかし、lua_createtable
それでも受け取りint
ます。
以下の関数の例では、ソース テーブルの長さを使用して、同じサイズのコピーを作成しています。
ただし、警告を消すにはキャストが必要です。
警告: 'lua_Integer' から 'int' への変換により、その値が変更される可能性があります [-Wconversion]
Luaメーリングリストで検索すると、Lua 5.2に関する次のスレッドが見つかりました(以前のバージョンにも当てはまると思います):
引用: Roberto Ierusalimschy (2012 年 8 月 7 日)
テーブルのサイズはすでに 2147483647 要素に制限されています。Lua は内部的に 'int' を使用してすべての配列にインデックスを付けます (文字列/バイト配列を除く)。どこでも符号なしの値 (size_t など) を扱うのは面倒です。ptrdiff_t には何の保証もありません。
long long
これは、 forを使用する Lua 5.3 にも当てはまりlua_Integer
ますか? int
上記の例で使用されているfromへのキャストはlua_Integer
、Lua 5.3 で安全ですか?
lua - Lua 5.3でlldを印刷する方法
最初の引数 (文字列である必要があります) で指定された説明に従って、可変数の引数のフォーマットされたバージョンを返します。フォーマット文字列は、ISO C 関数 sprintf と同じ規則に従います。唯一の違いは、オプション/修飾子*, h, L, l, n, and p
がサポートされていないことと、追加のオプションq
.
Lua 5.3 は をサポートしていません。Lua 5.3lld
で印刷するにはどうすればよいlld
ですか?
c - Lua UTString はどのようにして文字列の最大アライメントを保証しますか?
私は lua の (5.3.0) ソース コードを読んでlobject.h
います。
そこにそのような方法を使用する理由についての良い答えを見つけました。しかし、私は疑問に思っていますensures maximum alignment for strings
、それはどういう意味ですか? なぜ必要maximum alignment
で、どのように確保するのですか?
lua - Lua テスト スイート: vxWorks 6.9 でコルーチン テストが失敗する
vxWorks 6.9 に Lua 5.3 を統合しようとしています。現在、システムとの Lua の統合を確認するためにテスト スイートを実行しているときに問題が発生しています。lua.org Web サイト ( http://www.lua.org/tests/ ) で提案されているテストを実行しています。正確に何が失敗するのかを理解しようと何度も試みましたが、それほど簡単ではありません。「coroutine.lua」ファイルの実行中にシステムが再起動するか、ページ フォールトを返してクラッシュします。他の誰かがこのタイプの統合を試みましたか?
これらの定義で luaconf.h を編集しました。
助けてくれて本当にありがとうございます :)
編集:テストに合格するまれなケースがいくつかあります...その後、システムは通常、「goto.lua」の実行中に同じ動作でクラッシュします
LUA_COMPAT_5_1
編集: と を定義しても再び失敗しますLUA_COMPAT_5_2
。動作は常に同じです: 「coroutine.lua」テストまたは「goto.lua」テストの実行中のページ フォールト
lua - Lua: ローカルの package.path
package.path
Luaでは、ローカルスコープのみに適用するように定義する方法はありますか?
package.path
以下の例のように、ローカル変数に保存してスクリプトが終了する前に復元できることは理解していますが、よりクリーンな方法はありますか?
lua - package.loaded の関数を置き換えます
呼び出しpackage.loaded
後に特定のライブラリのすべての関数をどのように置き換えることができますか?require
関連するテーブルを反復しようとしましたが、テーブルが空になります。
lua - Luaでフィボナッチ数列を作成するには?
フィボナッチ数列を作成し、すべての偶数の合計を返す小さなスクリプトを作成しました。
この関数は、次のシーケンスを作成します。
1, 2, 3, 5, 8, 13, 21, 34, 55
そして、その偶数の合計を返します:44
ただし、ストップ インデックスを から に変更する10
と、値が大きくなりすぎるため、100
返さfor i=3, 100 do
れる合計は負になります。-8573983172444283806
私のコードが に対して機能し、 に対して機能10
しないのはなぜ100
ですか?
lua - dofile は機能しますが、スタック トレースバックを呼び出します
main.lua
たとえば .lua
結果:
しかし、私はなぜ理解していないのですか?
lua - 読み込まれた Lua ファイルを特定のスコープで実行する
プロジェクト鉱山の構成形式として Lua を使用しています。次の不自然な例があるとしましょうconf.lua
。
さて、自明ですが、もちろん、このファイルを次のようにロードできます。
ただし、これに関する問題は、これらの定義がグローバル名前空間に設定されていることです。これは望ましくありません。さらに、さまざまな変数全体にアクセスすることが難しくなります (たとえば、構成変数のセットをループします)。1 つの解決策は、次のように書き直すconf.lua
ことです。
conf.lua
次に、次のコードをロードします。
ただし、明らかな理由から、これは理想的ではありません。ユーザーはコンマを追跡し、 を書きlocal
、最後にテーブルを返すことを忘れないようにする必要があります。conf.lua
なんらかのカスタムスコープで実行させる方法があればいいのですが。