問題タブ [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.
templates - Nim: イテレータを別のイテレータからラップ/派生させる方法は?
existingIterator
任意の type の要素を反復処理するものがあると仮定しましょうT
。私が今達成したいのはexistingIterator
、変更された動作を使用してから新しい反復子を派生させることです。次のような例を考えてください。
- 元の反復子の長さを制限します
existingIterator.take(n)
。 - 要素のマッピング。たとえば、
existingIterator.map(modifier)
- などの特定の要素をフィルタリングし
existingIterator.filter(predicate)
ます。
これらすべてのケースで、次のようなことができるように、さらに別のイテレータを作成したいだけです。
私の一般的な問題は次のとおりです。既存のイテレータを取り、変更されたイテレータを返す汎用イテレータまたはテンプレートをどのように作成できますか?
フォローアップの質問は、なぜそのような重要な機能が標準ライブラリにないのかということです-何かが足りないのでしょうか?
これが私が試したことです:
試行 1
take(n)
機能を例に挙げてみましょう。私の最初のアプローチは、通常のジェネリックを使用することでしたiterator
:
これはコンパイルされますが、残念ながら実際には機能しません: (1) 要素が適切に反復されていません (それらはすべてゼロです。おそらくバグでしょうか? )、(2) 私のプログラムが無限ループに陥っているように見えます。 (3) クロージャ イテレータに対してのみ機能します。つまり、任意のイテレータをラップすることはできません。
試行 2
クロージャ イテレータに対する制限は、この問題が実際にテンプレート ソリューションを必要とすることを示唆しています。
これはほとんど機能しているように見えます (つまり、テンプレートがコンパイルされます)。ただし、今電話すると、次のようfor x in infinite.take(10)
になります。
実際にイテレータを「呼び出す」ためにa を追加しようとしました()
が、それでも機能しません。したがって、問題は次のとおりです。テンプレートからイテレータを作成/返すにはどうすればよいですか?
string - 文字列補間
scala では、次のように文字列内に変数の内容を簡単に含めることができます。
これはニムで可能ですか?その場合、どのように?
generics - ジェネリック シーケンス
次のスニペットがあります。ただし、2 番目の変数宣言はコンパイルされません。
Javaのリストのように、nimで一般的なseqを使用することは可能ですか?
c - CへのNimクロスコンパイル
私は Nim プログラムを書きました。
そして、Linuxマシン用にクロスコンパイルしようとしました.
これにより、次の出力が生成されました。
この時点で、nimcache/
ディレクトリに変更して実行しようとしました:
しかし、それは私にエラーを与えました:
「大したことない、そこnimbase.h
のディレクトリに見つけてドロップするだけだ」と思ったのnimcache
ですが、その後、新しいエラーが発生しました。
私はそれで何をすべきかわかりません。オプションを使用しようとし--genScript
ましたが、同様のエラーが発生しました。OS X Yosemite を実行しています。
ありがとう!
アップデート:
このオプションでサポートされているアーキテクチャの数はわかりませんでしたが、Nim を実用的なものにするブログ投稿--cpu:
に (部分的な?) リストを見つけました。結局電話したのですが、
これにより、Linux ボックスでコンパイルしたときに表示されたエラーが防止されました。Linux または OS X を使用していて、CPU アーキテクチャが不明な場合は、