問題タブ [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 - D 並列ループ
まず、D が並列 foreach (基礎となるロジック) を作成する方法は?
次に、単純な foreach より遅いのはなぜですか? 最後に、独自の taskPool を作成すると (そしてグローバルな taskPool オブジェクトを使用しないと)、プログラムは決して終了しません。なんで?
d - Tango+D2 をインストールしようとしましたが、エラー シンボルが未定義でコンパイルされました (ウィンドウ)
D2 で Tango と Phobo を一緒に使用しようとしました。リンクからパッケージをダウンロードし、そのインストールプロセスに従いました。
ただし、Linux のみがインストールされ、Windows はインストールされません。
これが私がすることです。
- Visual-D と DMD はインストール済みです。リンク
- ファイルを c:\Tango-D2-d2port に保存します
次のように C:\D\dmd2\windows\bin\sc.ini を変更します
[バージョン] version=7.51 Build 020
; 32/64ビット両方の環境
[環境]
DFLAGS= -IC:\Tango-D2-d2port\ -L-LC:\Tango-D2-d2port\ "-I%@P%....\src\phobos" "-I%@P%... .\src\druntime\import"
; optlink は環境セクションからのみ読み取るため、この冗長性が必要です。Environment32 セクションから (bugzilla 11302)
LIB="%@P%..\lib"
【環境32】
LIB="%@P%..\lib"
LINKCMD=%@P%\link.exe
【環境64】
LIB="%@P%..\lib64"
DFLAGS=%DFLAGS% -L/OPT:NOICF
LINKCMD=%VCINSTALLDIR%\bin\link.exe
次のシェル スクリプト ファイルを使用してコードをコンパイルし、dmd2\windows\bin\shell.exe を使用して実行します。
DMD=C:\D\dmd2\windows\bin\dmd
DFLAGS=
$(DMD) Main.d -debug -L+C:\Tango-D2-d2port\libtango-dmd
上記のインストールページからの私のサンプルコード。
tango.io.Stdout をインポートします。
ボイドメイン()
{
}
エラーメッセージ。
シェル1.05
C:\D\dmd2\windows\bin\dmd Main.d -debug -L+C:\Tango-D2-d2port\libtango-dmd
OPTLINK (R) for Win32 リリース 8.00.12
Copyright (C) Digital Mars 1989-2010 All rights reserved.
http://www.digitalmars.com/ctg/optlink.html
Main.obj(メイン)
エラー 42: シンボル未定義 _D5tango2io6Stdout12__ModuleInfoZ
Main.obj(メイン)
エラー 42: シンボル未定義 _D5tango2io6Stdout6StdoutC5tango2io6stream6Format20__T12FormatOutputTaZ12FormatOutput
Main.obj(メイン)
エラー 42: シンボル未定義 _D5tango2io6stream6Format20__T12?Outp垿aZ?7newli嘜FNdZC銅</p>
Main.obj(メイン)
エラー 42: シンボル未定義 _D5tango2io6stream6Format20__T12?Outp垿aZ?5printMFYC酷</p>
--- エラーレベル 4
私はすでに1〜2週間試していますが、参考のために多くの場所を調べた後、これは私が得ることができる最高のものですが、すべて無駄です.
pointers - Phobos のバイナリ ヒープを目的とした構造体へのポインタの比較
と呼ばれる構造体を作成しましたが、Node
その構造体へのポインタを Phobos のエントリとして使用できるようにしたいと考えていますBinaryHeap
。ただし、構造体へのポインターに対して (または実際には一般的に) どのように実装されてopEquals
いるかはわかりません。opCmp
私は、ドキュメントで私を助けるものを見つけることができませんでした。誰かが私を正しい方向に向けることができますか?
templates - テンプレート関数の型を解決できません
D で非常に単純なものをコーディングしようとしていますが、標準ライブラリのテンプレート関数の 1 つ (具体的にはnextPermutation
からstd.algorithm
) にいくつか問題があります。
私がやろうとしていることの核心は、パンデジタル数のすべての順列 (つまり、1 から 9 までのすべての値を正確に 1 回含む数) を作成することです。
これを行うために、次のことを行いました。
これは私にエラーを与えます:
エラー: nextPermutation の型を解決できません!(初期)
また、タイプを明示的に設定しようとしました:
ただし、これにより、テンプレートと一致しないというエラーが発生します。
エラー: テンプレート インスタンス std.algorithm.nextPermutation!("a < b", char[]) はテンプレート宣言と一致しません nextPermutation(alias less = "a < b", BidirectionalRange)(ref BidirectionalRange range) if (isBidirectionalRange!BidirectionalRange && hasSwappableElements!BidirectionalRange)
呼び出しの正しい形式は何ですか?
d - コンテナが所有するオブジェクトの決定論的破壊 (または Unique (std.typecons.Unique) を D Phobos コンテナに入れる方法)?
コンテナーが破棄されたときに、コンテナーによって管理されている (所有されている) すべてのアイテムも自動的にすぐに破棄されるようにするために、一意のリソースでいっぱいのコンテナーをインスタンス化しようとしています。
次の (一意ではない) コードは、期待どおりに動作します。アプリが終了するまで Foo オブジェクトが破棄されていないことに注意してください (最終的には GC によって回収されます)。DList が破棄されるとき (「スコープの終了」メッセージで) 決定論的にそれらを破棄しないことにより、現時点では GC を無視します。コンテナー内のオブジェクトは、アプリの有効期間中に効果的にリークされます。
期待どおり、次の出力が得られます。
しかし、Unique で動作するようにアプリを更新すると、次のようになります。
上記のコードは、次の出力を提供します。
list.insertBack() 行をコメント アウトすると、Bus エラー 10 が消えます。
regex - std.regex.regex の戻り値は?
入力文字列、正規表現 ( std.regex.regex
rawstring から作成)、およびエラー メッセージ文字列を受け取り、正規表現を使用して入力文字列から何かを照合しようとする関数を作成しようとしています。一致します。これまでのところ、次の署名を思いつきました。
ただし、コンパイラが次のように不平を言うため、これは機能していないようです。
では、代わりに何を使用すればよいでしょうか?
d - D でのオプション値の表現
テキスト ファイルを 1 行ずつさまざまなタイプの構造体に読み込み、これらの構造体をコールバック (オブザーバーまたはビジター - まだ不明) に渡すパーサーを作成しようとしています。
テキスト ファイルには、MT-940 データ (SWIFT 銀行取引明細書) が含まれています。
これらの行は、タイプを指定するマーカーと、メッセージのタイプ セーフなメンバーに解析する必要があるいくつかのフィールド (日付など) で構成されます。これらのフィールドの一部はオプションです。私の質問は、D でオプションの値をどのように表現すればよいかということです。
C++ は、ご存じかもしれない boost::optional のような私のものを提供します。
私は現在、自分で Optional(T) を実装することでこれを回避しています (この記事の最後にあるコードを参照してください)。これは、null の可能性がある ValueHolder インスタンスを含む構造体です。これは、値が割り当てられていない場合を示します。必要に応じて、ValueHolder のディープ コピーを作成するために、copy-c'tor と代入演算子を上書きしました。
これは行く方法ですか?他の - もっと単純な - 私が見ることができないオプションはありますか?
これは私のコードです - 機能がまだ完全であるとは限りません:
pointers - D: const struct ポインターの std.container.Array を作成できないようです
struct type があるとしFoo
ます。std.container.Array
への const ポインタのを作成しようとしていますFoo
。最初に明白なことを試しました:
ただし、これによりコンパイラ エラーが発生します。次に、括弧を減らして試しました:
しかし、これは同じエラーを引き起こしました(error instantiating
明らかに)。ここで何が間違っていますか?
d - D の stdin から 1 文字を読み取る
のドキュメントには、標準入力から単一の文字を取得するために使用できる関数がstd.stdio
リストされておらず、行を取得するためだけに使用できます。機能がありますが、ファイル名が必要です。これは、私の知る限り、標準入力では使用できません。read
readln
std.file
read
から 1 文字を読み取るにはどうすればよいstdin
ですか?
constants - D: std.container.Array クラスで opIndex が const 修飾されていないのはなぜですか?
私は最近 std.container.Array を利用したいと思い、Array クラスから値を返す getter メンバー関数を持つクラスの作成に進みました。opIndex は変更可能な関数であるため、getter を const 修飾できないことにすぐに気付きました。
ソース コードを const-qualify Array.opIndex に変更してみましたが、問題なくビルドできました。ただし、std.algorithm の一部の単体テストはパスせず、Array.opIndex の戻り値が左辺値ではないという不平がありました。
Array.opIndex のコードは次のとおりです。
私がここに欠けているものはありますか?const修飾されていないのはなぜですか?