問題タブ [phobos]
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.
d - std.algorithm.map の結果に対する std.array.replace の使用
std.array.replace
だから私は今日Dプログラミング言語をいじっていましたが、戻り値の型で使用する方法に関する情報を見つけることができませんでした.std.algorithm.map
残念ながら、これは機能しません。代わりに、次のエラー メッセージで失敗します。
main.d(15): エラー: テンプレート std.array.replace がどの関数テンプレート宣言とも一致しません。候補は次のとおりです: /usr/share/dmd/src/phobos/std/array.d(1652): std.array.replace(E, R1, R2)(E[] subject, R1 from, R2 to) if (isDynamicArray !(E[]) && isForwardRange!R1 && isForwardRange!R2 && (hasLength!R2 || isSomeString!R2))
main.d(15): エラー: template std.array.replace(E, R1, R2)(E[] subject, R1 from, R2 to) if (isDynamicArray!(E[]) && isForwardRange!R1 && isForwardRange! R2 && (hasLength!R2 || isSomeString!R2)) は、引数の型 !()(MapResult!(unaryFun, int[]), int, int) からテンプレート関数を推測できません
のドキュメントにstd.algorithm.map
は、遅延評価を使用していると書かれていますがstd.array.array
、結果を変換するために使用しても機能しません。
DMD 2.064.2 を使用しています。
sockets - Dソケットプログラミング基本接続スクリプト
私は D プログラミングにまったく慣れていないので、無知を許してください。Web サイトに接続してページをダウンロードするか、安らかな API に接続して情報をダウンロードするための基本的なプログラムを作成しようとしています。今、私が心配する必要があるのは、TCP (ストリーム) だけです。std.socket ライブラリを使用しています。残念ながら、適切な構文を示すオンラインまたはドキュメントはあまり見つかりません。私は PHP と C++ でこれを行い、概念を理解しましたが、構文については本当に助けが必要です。誰かが例やリンクを投稿できれば、それは大歓迎です!
d - 要素のインプレース順序付け
Phobos には、左辺値参照引数を配置する可変アルゴリズムがありますか? 何かのようなもの
order(a, b, c)
また、タプルを返す機能的なバリアント、たとえばもいいでしょう。
そうでない場合は、 を使用する必要があると思いますstd.algorithm:swap
。
d - 不変範囲のデカルト積
2 つの不変範囲のデカルト積を計算できないのはなぜですか?
次のコード:
投げる:
さらに、2番目の最初の不変が削除された場合、それは機能します。
phobos の実装によれば、範囲の 1 つは inputRange であり、もう 1 つは forwardRange です。なぜそのようなテンプレートの制約?
replace - D: 文字列内のスペースのエスケープ
文字列"foo bar baz"
があり、それを に変換したいと考えてい"foo\ bar\ baz"
ます。手作業によるハッキング方法 ( を呼び出しsplit
てから、適切なセパレーターで再結合する) 以外に、これを行う別の方法はありますか? replace
フォボスに関数のようなものはありますか?
d - BinaryHeap の配列からの奇妙な動作
Node
他のオブジェクトへの参照を持つオブジェクトを使用して、ツリーのような構造を持っていNode
ます。Node
クラスです。今、私が書いているルーチンの 1 つは、最小優先度のキューを必要とします。これは、 と を使用して実装しstd.container.BinaryHeap
ていstd.container.Array
ます。次のようにインスタンス化しています。
ルーチンの一部として、 using に要素を挿入し、heap
usinginsert
から要素を削除しremoveAny
ます。現在、ルーチンは正しく機能しますが、その後、ノードが欠落しているため、ツリーのような構造が壊れます (それに対する私の不変条件は失敗します)。ここで何が起こっていて、なぜこれが起こっているのですか?