問題タブ [nim-lang]
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.
generics - ジェネリックを使用したニム2キーテーブル
値がユーザー指定の型である Nim で 2 つのキー辞書を作成しようとしています。
次のエラーが発生しました:
私もこれに問題があります。
同じエラーが発生します。
macros - nnkUInt16Lit NimNode の作成方法
nnkUInt16Lit
列挙バリアントとこの AST 表現を説明することを除いて、これに関するドキュメントはありません42'i16 - nnkInt16Lit(intVal = 42)
。
通常のように使用するnnkIntLit
と失敗します。
これによりエラーが発生します。
フィールド
intVal
が見つかりません
(これは私の実際の使用法ではありません。問題を示すための単なるデモです。)
でさまざまなバリエーションを試しましintVal
たが、エラーは常に になりundeclared identifier
ます。を使用しますparseExpr()
が、 の$
procint
はコンパイル時に機能しないようです。
NimNode
型定義のソース コードを探して調べてみましたが、今のところ見つかりません。
uint16
では、マクロで NimNodeを作成するにはどうすればよいでしょうか?
generics - 「ジェネリックパラメータは許可されていません」を解決する方法
TL;DR: 同様の問題がある場合は、 a:
と a を混同するなど、完全にばかげたことをしていないことを最初に確認してください=
。私はエラーメッセージに非常に困惑していたので、愚かな間違いをさらに別の愚かな間違いで再現することができたので、大笑いしてください:
エラーに苦しんでいたところに問題が発生しましたno generic parameters allowed
。この問題はおそらく次のように簡略化して説明するのが最も適切です: 最初の要素だけでタプルを比較する問題。次の例を検討してください。
この例では が生成されError: no generic parameters allowed for sort
ます。ネストされたコンパレータ プロシージャも定義して、あらゆる種類の構文のバリエーションを試しました。私が理解していないこと: コンパレーターがまだ一般的であると見なされているのはなぜですか? sortByFirstTupleElement
私は、型内でK
とV
が呼び出しコンテキストからインスタンス化された型、つまりint
andであることを期待していましたNotComparable
。したがって、私cmpByKey[K,V]
は具体的であることを期待していましたcmpByKey[int,NotComparable]
。コンパレータを具体的にするための構文上のトリックはありますか?
これが不可能な場合、ここで可能な回避策は何ですか? この例だけでなく、一般的には?この問題は、ジェネリック proc がジェネリック型を含む別の proc を渡す必要があるたびに発生すると思いますか?
arrays - Nim で配列への参照を作成する
Nim では、値渡しの代わりに参照を配列に渡すにはどうすればよいですか? 私がこれまでに持っているものについては、上記のコードを参照してください。
generics - ジェネリック関数型を定義する
次のスニペットがあるとします。
次のように、ベースおよびベース コンシューマからいくつかのタイプを定義したいと思います。
今、私が新しいものを作成するときConsumeOne
:
次のコンパイラ エラーが発生します。Error: type mismatch: got (proc (b: BaseOne): bool{.gcsafe, locks: 0.}) but expected 'ConsumeOne'
私は何を間違っていますか?
sdl - RectでのNimとSDL2の問題
次のNim +公式libsdl2ラッパーコードがあります
そして、コンパイル中にエラーがあります:
20行目も同様:
copy()とコメントqueryTexture()でposをnilに置き換えれば、すべて問題ありません。この問題を解決するのを手伝ってください。
nim-lang - モジュールのインポートに使用できる「デフォルト」のファイル名はありますか?
つまり、ローカルNim モジュールのプライマリ ファイルに使用できる標準的な名前があれば、パスでインポートするときにディレクトリを簡単に参照できるということですか?
たとえば、ローカル モジュールのディレクトリとファイル名の両方を次のように指定する必要があるようです。
予想されるファイル名が見つかった場合、単にディレクトリを参照できることを望んでいましたが、
Nimble を使用するか、ファイル--path
内のすべてのモジュールに個別のフラグを作成する以外に、これを可能にするものはありますか?nim.cfg
また、一般的に、モジュールのメイン ファイルに使用する従来の名前はありますか?
このような単純なアプリがある場合:
サブモジュールをロードするためにmyapp.nim
使用する必要があります。import sub.sub
でimport sub
、私は得るError: cannot open sub
。
同様に、アプリの外部にモジュールがあり--path
、それらのモジュールの親に を設定する場合は、 を使用する必要がありますimport my_module.my_module
。
nim-lang - テンプレート内の 2 つの typedesc を比較して等しいかどうかを確認する方法
テンプレート内の 2 つの typedesc を比較して、それらが同じ型を参照しているかどうか (または少なくとも同じ型名を持っているか) を確認できるようにしたいのですが、方法がわかりません。オペレーターはこれ==
を許可しません。
それは私にこれを与えます:
これはどのように行うことができますか?