問題タブ [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.
recursion - 再帰によるd言語の同時実行
d 言語でアクター モデルを使用して階乗関数を実装しようとしています。私の目的は、アクターを作成して各パーツを単独で計算し、新しいアクターを生成して次のアクターを作成することです。私は D の初心者なので、言語の使い方を学んでいます。私の目的は、階乗の実装をさらに拡張することです。これは単なるテストです。
これが私の問題です。再帰を使用して階乗を実装しようとしています。ファクト関数は、基本条件に達していない限り、行の次の番号の新しいファクト スレッドを作成します。
私のコード:
それが可能かどうかさえわかりませんが、いずれにせようまくいきません。spwn in fact 関数を追加しようとすると、次のエラーが返されます。
それで、私がやろうとしていることをすることは可能ですか?どのように?そうでない場合、そのようなことを可能にする計画はありますか?
助けてください。
casting - D での整数から文字列への変換
Dで整数を文字列にキャストするにはどうすればよいですか? 何かのようなもの
グーグルはタンゴでそれを行う方法についての答えを私にもたらしましたが、私はフォボスバージョンが欲しいです.
unicode - ユニコード変換
構成:
- OS: Windows 7 (32ビット)
- Phobos 標準ライブラリを使用した DMD 2.58
私の意図:
2007 年に書かれた古いパッケージ (10 個のモジュール) の移植を開始しました。完全な Unicode サポートが特徴で、その機能を維持したいと考えています。
その作成者はclass UnicodeBom(T)
、次の目的のために特定のモジュール ( ) を作成しました。非常に複雑なアプローチです (少なくとも、私は熱狂的ファンであり、C++/Qt/C# 入門の経験しかない初心者であることを考えると)!
私はすべてのモジュールからコードフラグメントをクリーンアップTango
し、ボックスで作業することに成功しました (確かにユニット/モジュールレベルで) これまでのところ、10 個中 4 個のモジュールのみです。
コードフラグメント:
どこ
- st (パラメータ) は
std.stream.Stream
- mSourceBuffer (プライベート フィールド) は
wchar[]
見積もり:
メソッドに関連するコード ドキュメントからの抜粋final T[] decode (void[] content)
:
提供されたコンテンツを変換します。BOM 署名の内容が検査され、削除されます。署名が存在する場合、エンコーディング タイプによって存在すべきでない場合に、例外がスローされます。逆に、現在のエンコーディングで既知の署名が存在すると予想される場所に既知の署名がない場合は、例外がスローされます。
私の質問:
Druntime
すぐに使える、および/またはPhobos
同じ結果につながるリソースを使用する最新のより慣用的なアプローチはありますか (つまり、UTF8/16/32 ファイルをロードし、BOM なしで wchar[] に変換します)?
前もって感謝します。
c - C ライブラリを使用する場合、D は C と下位互換性がありますか?
ライブラリを C に含める代わりに std.c ライブラリをインポートすると、C コードは D コンパイラでコンパイルされますか、それとも他のバックワード互換性の問題がありますか?
d - Dで範囲をどのように使用しますか?
Dで範囲を使おうとすると、惨めに失敗します。
Dで範囲を使用する適切な方法は何ですか?(私の混乱については、インラインコメントを参照してください。)
d - std.algorithm.joiner(string[],string) - なぜ結果の要素は char ではなく dchar なのですか?
次のコードをコンパイルしようとします:
dmd
エラーで終了するコンパイル:
に変更char z
するdchar z
とエラーメッセージは修正されますが、そもそもなぜ表示されるのか興味があります。
joiner(string[],string).front()
の結果がchar ではなく dcharであるのはなぜですか?
(ドキュメントhttp://dlang.org/phobos/std_algorithm.html#joinerには何もありません)
d - std.complex の設計の背後にある理由は何ですか?
つまり、 を持つことはできますがComplex!(immutable float)
、そのopBinary
関数を の別のインスタンスに対して使用することはできませんComplex!(immutable float)
。では、なぜ std.complex がそのように実装されているのでしょうか?
これがopBinary
です。を呼び出しますがopOpAssign
、これは では機能しないimmutable
ため、エラーが発生します。
d - Dのstd.rangeからTake!Rをスライスできませんか?
スライス演算子を使用して、std.rangeからtake関数の戻り値のスライスを取得しようとしています。私のコード:
この場合のTake!Rはchar []の単なるエイリアスなので、これがコンパイルされることを期待しています。しかし、コンパイラは私にそれを教えてくれTake!(char[]) cannot be sliced with []
ます。別の例をとると:
これは問題なくコンパイルおよび実行され、[1、2、3、4、5]を出力します。最初の例が機能しないのに、2番目の例が機能する理由については、この時点で完全に混乱しています。
io - Dstdoutを機能にリダイレクトします
C書き込み関数へのすべての呼び出しを含め、すべてのコンソール出力を自分のGUIコンソールにリダイレクトしたいと思います。
私が試したこと:
- 新しいストリームクラスを作成していますが、stdio.stdoutはファイルであり、ストリームを割り当てることはできません
- 新しいファイルクラスを完全に作成しますが、構造体を拡張することはできません
そのためにCバインディングを深く理解する必要がありますか?どんな助けでも大歓迎です。
d - std.range.Lockstepを入力範囲として使用する
http://forum.dlang.org/thread/arlokcqodltcazdqqlby@forum.dlang.orgを複製して、回答速度を比較します:)
私は基本的に次のようなことができるようになりたいです:
auto result = map!( (a, b) => a+b )( lockstep(range1, range2) );
opApply(ロックステップ)を使用して構造体の周りに入力範囲をラップする標準の短い方法はありますか?
また、ロックステップを適切な範囲として再設計するのはどうですか?プルリクエストはできましたが、現在の意図がわかりません。