問題タブ [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.

0 投票する
3 に答える
5972 参照

gcc - nim プログラムの c コードを取得するにはどうすればよいですか?

ドキュメントに従ってコンパイルしましnim compileToC helloworld.nim たが、実行可能ファイルを吐き出すだけです。中間の C 表現を確認するにはどうすればよいですか?

0 投票する
1 に答える
383 参照

function-pointers - Nim で前方宣言されたプロトタイプを使用して関数ポインターを割り当てる

ウィンドウ プロシージャをウィンドウ クラス構造に割り当てたい:

WndProc は宣言されていないため、まだ割り当てることができません。前方宣言を使用する場合 (ここで説明):

次のエラーが表示されます。

私の前方宣言は間違っていますか、それともこの場合最初に関数を書く必要がありますか?

編集:

参考までに、次のコードはグローバル スコープで動作します。

WNDCLASS と WNDPROC の定義は、http://nim-lang.org/windows.html にあります

0 投票する
1 に答える
360 参照

inheritance - Nim のシーケンスからの継承

seq私は約1日Nimを試してきましたが、操作するプロシージャがseqカスタムタイプも処理できるように、タイプをビルトインから継承する方法を知りたいと思っていました。

TestCol以下に、 a がシーケンスをラップ/プロキシする最小限の例を含めました。手順を再定義せずに、 などをTestColサポートする方法はありますか?mapfilter

できれば、解決策として、パフォーマンス上の理由からカスタム シーケンスを通常のシーケンスに変換する必要はありません。変換は上記よりも簡単ではありません (def- で提案されているように、今のところはそのようにします)。

実際の使用例は、 RingBuffer.nimに配列ヘルパーを実装することです。

0 投票する
3 に答える
3365 参照

import - Nim はインポートするモジュールをどこで検索しますか?

ステートメントを使用する場合、importNim はどのように/どこでモジュールの検索を実行しますか?

ファイル パスを使用できることはわかっていますが、ファイル パスを使用したくない場合は、ローカルで定義したモジュールを自分のマシンのどこに配置すればよいでしょうか?

私はまだ Nimble を使用したことがなく、それが 1 つの方法だと思いますが、モジュールがローカルでのみ定義されている場合にどのように行われるかについてもっと興味があります。

0 投票する
1 に答える
163 参照

pointers - const からアドレスを取得する

マニュアルから:

変数のアドレスを取得できますが、let ステートメントで宣言された変数には使用できません。

これは安全を確保するために行われていることを理解しています。さて、const からアドレスをどうしても取得したい場合、回避策はありますか?

0 投票する
3 に答える
2528 参照

pointers - Nim: パラメータのアドレスと可変性

の背後にある Nim のポリシーについて決心しようとしていexpression has no addressます。特に、データ バッファーのポインター (+ 長さなど) を受け取る C 関数があります。この関数がデータを変更しないことはわかっています。簡略化:

一方では、これは理にかなっています。パラメーターは、let「アドレスを持たない」バインドとまったく同じように動作するように見えるからです。一方、私はマニュアルの次の記述に困惑しています。

var パラメーターは、効率的なパラメーターの受け渡しには必要ありません。

私の知る限り、データのコピーを回避する唯一の方法は次のいずれかです。

  • パラメータを次のように渡すbuf: var Buffer
  • 参照を渡す、つまりref object.

どちらの場合も、これは私の関数がデータを変更することを示唆しています。さらに、呼び出し元サイトに可変性が導入されます (つまり、ユーザーはバッファーに let バインディングを使用できなくなります)。私にとっての重要な質問は次のとおりです。「私は知っている」callToCが読み取り専用であるため、コピーなしで両方の不変性を許可するように Nim を説得できますか? 呼び出しが不変であることを確実に知る必要があるため、これは危険です。したがって、これにはある種の「安全でないアドレス」メカニズムが必要になり、不変データへのポインタを強制できますか?

そして、パラメーター アドレスの最後の謎: タイプを に変更して、コピーの必要性を明示しようとしましたBuffer {.bycopy.} = object。この場合、コピーは呼び出し時に既に行われており、今すぐアドレスにアクセスできると予想されます。この場合もアクセスが拒否されるのはなぜですか?

0 投票する
1 に答える
114 参照

generics - Nim でジェネリックを使用して型を変換するときの ObjectConversionError

次のような単純なクラス階層を作成する場合:

x型のメンバー変数にアクセスすると、期待される出力 (行に表示) が得られますbazObj

ジェネリックを使用して同様の階層を作成すると、コードは正常にコンパイルされますが、ObjectConversionError例外がスローされます。私の構文は間違っていますか?それとも、Nim ではサポートされていないジェネリックを使用したこのタイプのオブジェクト変換ですか?

22 行目を に置き換えるとecho bazObj(troz).x、コンパイル時に次のようになります。

0 投票する
2 に答える
339 参照

nim-lang - Nim でのコンパイル時の呼び出し回数

次のコードはコンパイルされませんが、私がやりたいことを示しています。 Nim のこの側面はまだ)。

次のコードが各テスト レポート行の先頭に [1/2] と [2/2] を出力できるようにするには、このコードをどのように変更すればよいでしょうか?

編集:コードに質問を追加

0 投票する
1 に答える
792 参照

nim-lang - Nimで循環依存を行う標準的な方法

2 つのモジュールがあるとします。1 つは Object を定義し、もう 1 つは ObjectFactory を定義します。オブジェクトは、ObjectFactory にアクセスしてその関数の一部を使用する必要があり、ObjectFactory は、オブジェクトをインスタンス化できるようにオブジェクトにアクセスする必要があります。

オブジェクトがモジュールに実装され、ObjectFactory が別のモジュールに実装されている場合、Nim でこれを解決する標準的な方法は何ですか?