D言語/DLang2.100.0がリリースされました

D言語/DLang2.100.0が正式にリリースされました。このリリースには、 22の主要な変更と179の修正されたBugzillaの問題が含まれています。

主な変更点

  • C++ヘッダー生成を改善する 
  • @mustuseリターンタイプのエラーチェックを強制する新しいプロパティ
  • コントラクト不変バージョン識別子のサポート
  • 静的配列に.tupleof プロパティを追加 します
  • Zlibが1.2.12に更新されました
  • std.functional は新しい関数 bindを導入します
  • 非推移的なインアウトリターンの導入、およびその他の改善

ImportCを使用してCソースにDコードモジュールをインポートします

D 2.099.0以降、__import Dコードモジュールはキーワードを介してCファイルに直接インポートできます。

// dsayhello.d
import core.stdc.stdio : puts;

extern(C) void helloImport() {
    puts("Hello __import!");
}
// dhelloimport.c
__import dsayhello;
__import core.stdc.stdio : puts;

int main(int argc, char** argv) {
    helloImport();
    puts("Cool, eh?");
    return 0;
}

次のコードでコンパイルします。

dmd dhelloimport.c dsayhello.d

ImportCでコンパイルされたCコードモジュールをインポートすることも可能です。

// csayhello.c
__import core.stdc.stdio : puts;

void helloImport() {
    puts("Hello _import!");
}
// chelloimport.c
__import csayhello;
__import core.stdc.stdio : puts;

int main(int argc, char** argv) {
    helloImport();
    puts("Cool, eh?");
    return 0;
}

次のコードでコンパイルします。

dmd chelloimport.c csayhello.c

スロー式を導入する

D言語のライフサイクルでは、ステートメント(ステートメント)であり、式には型が必要であり、値を返さないため、適切な型がないthrow ため、式で使用できません。次の構文を使用することはできません。 throw 

(string err) => throw new Exception(err);

次のスキームのみを使用できます。

(string err) { throw new Exception(err); }

ただし、D 2.099.0以降、次のコードスニペットがコンパイルされます。

void foo(int function() f) {}

void main() {
    foo(() => throw new Exception());
}

詳細については、変更ログを参照してください

おすすめ

転載: www.oschina.net/news/196121/dlang-2-100-0-released