問題タブ [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 - How convert a D array to C variadic?
I would like convert an array in D of the form:
I have a C function which takes a C variadic:
I could do:
But this seems like hacking the C variadic and I would rather convert directly to C vararg,
How can I do this?
thanks
documentation - shell()の存在に依存できますか?
std.process
いいshell()
機能があります。
これはPhobosソースに文書化されていますが、オンラインでは文書化されていません。これにより、実際のコードで使用することを少し躊躇します。それは実験的で不安定ですか、それともオンラインドキュメントは遅れていますか?
set - Dでの単純なセットの実装?
私はDの標準ライブラリでSetの実装を探していましたが、次のものしか見つかりませんでした。
- BinaryHeap
- RedBlackTree
使い方がわかれば、どちらも問題なく動作します。私はRedBlackTreeから始めました(私はすでにそれらがどのように機能するかを知っているので)、そしてこれは私が思いついたものです:
最初のforeachで条件を実行できたはずですが、これは、セットに要素を追加したり、セットから要素を削除したりする必要があることを示す単なる例です。これは機能しますが、コンパイルエラーが発生します。
エラー:template std.container.RedBlackTree!(string).RedBlackTree.removeKey(U)if(isImplicitlyConvertible!(U、Elem))がどの関数テンプレート宣言とも一致しません
エラー:template std.container.RedBlackTree!(string).RedBlackTree.removeKey(U)if(isImplicitlyConvertible!(U、Elem))は、引数の型からテンプレート関数を推測できません!()(string
赤黒木(重複のないもの)は必要ありません。速度はそれほど重要ではありません。私はこのようなことをすることができます:
単純なセットの標準ライブラリに何かありますか?
floating-point - approxEqual()の適切な使用法は何ですか?
最初は最大の相対差だけに頼れると思っていましたが、間違っていました。たとえば、、、の場合a = 0.0
、b = 0.5
それらの相対的な差は1.0
です。この場合approxEquals(lhs, rhs, maxRelDiff, maxAbsDiff)
、2つの浮動小数点数が等しいかどうかを判断するために、最大絶対差に依存します。
2つの質問は次のとおりです。
デフォルト(1e-2、1e-5)が十分に正確でない場合、どうすれば新しい最大相対差と絶対差のペアを思い付くことができますか?デフォルト値としてどのように
1e-2
選択されましたか?1e-5
たとえば1e-4
、最大相対差として選択した場合、最大絶対差はどれくらいですか?floats
とを正しく機能させるために、最大相対差と絶対差の値を調整するにはどうすればよいdoubles
ですか?
d - D で 2D 配列を作成するにはどうすればよいですか?
これは十分に単純なはずですが、そうではありません。
arrays - D2 の phobos std.range を使用して既存の配列をカプセル化する方法
既存のデータ配列 (Python の Numpy Lib によって作成された) を D2 言語の配列のようなオブジェクトにカプセル化したいと思います...配列データをコピーする必要はありません...私は既に Python の cTypes Lib を使用して DLL 呼び出しを行います。配列の長さとデータポインターを渡します..しかし、私はまだ配列データをコピーしてネイティブD2配列に配置しています。phobos ライブラリの std.range クラスを使用することで、配列データをコピーする必要がないように思われます。 ... これがどのように行われるかについて、D2 のサンプル コードがあるとよいでしょう。
casting - 数値と文字列を機能的に連結できますか?
文字列に数値を埋め込む純粋関数を作成しようとしています。明らかな連結方法は機能しません。
数値と文字列を連結するためのクリーンで機能的な方法はありますか?独自の連結関数や変換関数を作成することは避けたいのですが、必要に応じて作成します。
d - Dのchar[]配列から空白文字を削除します
Dのchar[]から空白を削除するための推奨される方法は何ですか。たとえば、私が持っているdmd2.057を使用して
コンパイル時に、これはこのエラーを生成します:
いくつかのグーグル検索を行ったところ、同様のエラーがバグとして報告され、 2011年6月に提出されたことがわかりましたが、それが同じものを指しているのか、別の問題を指しているのかわかりません。
一般に、文字列から特定の文字を削除し、前の文字配列の文字の順序を維持するために推奨されるアプローチは何ですか?
この場合、
空白文字を削除した後
ipv6 - D-IPアドレスが有効であることを確認する方法
HTTP解析ライブラリを作成しています(純粋なDで適切なライブラリが見つからなかったため)。IPアドレスを検証できる必要があるため(URIフィールド用)、IPアドレスを検証するための関数をいくつか作成しました。 :
IPv4の場合:
そしてIPv6の場合:
最初はIPv6の正規表現を作成しようとしましたが、特に特殊なケース()が非常に多いため、それは苦痛::
でした。また、非常に長いため、正規表現のコンパイルのバグに遭遇したと思います。もちろん、これを行うためにいくつかの標準関数を使用したいと思います。
FWIW、私はstd.arrays.splitを使用してIPv4バリデーターを実装しましたが、それ以外の場合はstd.conv.to!intからの例外を検出またはキャッチする必要があるため、この方法で実装することにしました。
本当にありがとう!
ノート
最終的には、Phobosに書き込んだコードの一部を取得したいので、コードをできるだけ堅固にしたいと思います。
d - ubyte[]を指定されたエンコーディングにデコードする方法は?
問題は、実行時にエンコーディングが設定されている場合にファイルを解析する方法ですか?
エンコーディングは次のとおりです: utf-8、utf-16、latin1またはその他
目標は、選択したエンコーディングから ubyte[] を文字列に変換することです。std.stdio.File.byChunk または std.mmFile.MmFile を使用すると、データとして ubyte[] があるためです。