D言語が好きないくつかの場所
詳細
1、醜いマクロを消した.
C/C++のマクロはうんざりしており、Dはこれ以上使用できません.
2、使いやすい文字列定数式.
クラスCの二重引用符を用いた文字列定数式に加え、`文字を用いることもできる.x"68 65 6 C 6 C 6 F"を使用して「hello」を表すことができ、r"aba"は文字列定数におけるエスケープ文字のエスケープ作用を無視し、文字列定数の後にc,wまたはdを加えて文字列定数がchar[]タイプ、wchar[]タイプ、またはdchar[]タイプであることを示すことができる.~演算子を使用して2文字列を接続できます.
3、数字.
数値は直接使用できますが、int a=3_と定義することもできます.029_301_000; 数値の直接量(整数、浮動小数点数、複素数を含む)式で、""文字は無視されます.また、複数のタイプも直接提供されています.
4、定長配列、変長配列、関連配列を提供する.
int[3]aは定長配列を定義する.int[]aは、変長配列を定義する.int[int]は関連配列を定義し、キータイプはint、値タイプはintである.int[char[]]aは関連配列を定義し、キータイプはchar[]であり、値タイプはintであり、非常に便利である.
foreachを使用して配列を巡回できます.
foreach
(
int
index,
int
value; a) printf (
"
%d: %d
"
, index, value);
foreach
(
char
[] key,
int
value; a) printf (
"
%.*s: %d
"
, index, value);
inオペレータを使用して、値が関連配列のキーであるかどうかを判断できます.
int
[
char
[]] a;
if
(
"
hello
"
in
a) writefln (
"
hello
"
);
配列はスライスできます(slice):
int
[] a;
int
[] b
=
a[
1
..
3
];
int
[] c
=
a[
1
..length];
待って...
5、その他委託、関数ポインタ、テンプレート、異常、RAI、契約式プログラミング、ユニットテスト、with文、auto/typeof、ゴミ回収、オペレータリロード、インラインアセンブリ、条件コンパイル、HTMLへの埋め込みなどもサポートされ、ABIも標準化されている(C/C++が最も頭を悩ませる場所の一つである).これらの特性の大部分は熟知して実用的で、以下では条件のコンパイルとHTMLへの埋め込みを簡単に紹介します.
6、条件コンパイル.
Dではversion(VersionID)を使用して条件コンパイルを行うことができます.
version (Win32){
//
}
else
{
//
..
}
デバッグ条件も使用できます.
debug{
//
}
else
{
//
}
または、
debug printf ("hello");
静的条件のコンパイル:
const
int
n
=
1
;
static
if
(n
==
1
) writefln (
"
hello
"
);
else
writefln (
"
world
"
);
タイプチェック:
int
n
=
3
;
if
(
is
(n[])) writefln (
"
like array
"
);
if
(
is
(n:
int
)) writefln (
"
is an integer
"
);
7、HTMLを埋め込む.
1つのHTMLファイルでは、
<
h1
>
This is a test
h1
>
<
code
>
import std.c.stdio;int
<
font
size
=+1
><
b
>
main
b
>
font
>
(){
<
span
style
="color:red"
>
printf
span
>
(
<
u
>
"
hello world
"
u
>
);
return 0;}
code
>
<
hr
/>
<
h1
>
End
h1
>
HTMLファイルとして保存し、dmdコンパイラで直接コンパイルできます.
1、醜いマクロを消した.
C/C++のマクロはうんざりしており、Dはこれ以上使用できません.
2、使いやすい文字列定数式.
クラスCの二重引用符を用いた文字列定数式に加え、`文字を用いることもできる.x"68 65 6 C 6 C 6 F"を使用して「hello」を表すことができ、r"aba"は文字列定数におけるエスケープ文字のエスケープ作用を無視し、文字列定数の後にc,wまたはdを加えて文字列定数がchar[]タイプ、wchar[]タイプ、またはdchar[]タイプであることを示すことができる.~演算子を使用して2文字列を接続できます.
3、数字.
数値は直接使用できますが、int a=3_と定義することもできます.029_301_000; 数値の直接量(整数、浮動小数点数、複素数を含む)式で、""文字は無視されます.また、複数のタイプも直接提供されています.
4、定長配列、変長配列、関連配列を提供する.
int[3]aは定長配列を定義する.int[]aは、変長配列を定義する.int[int]は関連配列を定義し、キータイプはint、値タイプはintである.int[char[]]aは関連配列を定義し、キータイプはchar[]であり、値タイプはintであり、非常に便利である.
foreachを使用して配列を巡回できます.
foreach
(
int
index,
int
value; a) printf (
"
%d: %d
"
, index, value);
foreach
(
char
[] key,
int
value; a) printf (
"
%.*s: %d
"
, index, value);
inオペレータを使用して、値が関連配列のキーであるかどうかを判断できます.
int
[
char
[]] a;
if
(
"
hello
"
in
a) writefln (
"
hello
"
);
配列はスライスできます(slice):
int
[] a;
int
[] b
=
a[
1
..
3
];
int
[] c
=
a[
1
..length];
待って...
5、その他委託、関数ポインタ、テンプレート、異常、RAI、契約式プログラミング、ユニットテスト、with文、auto/typeof、ゴミ回収、オペレータリロード、インラインアセンブリ、条件コンパイル、HTMLへの埋め込みなどもサポートされ、ABIも標準化されている(C/C++が最も頭を悩ませる場所の一つである).これらの特性の大部分は熟知して実用的で、以下では条件のコンパイルとHTMLへの埋め込みを簡単に紹介します.
6、条件コンパイル.
Dではversion(VersionID)を使用して条件コンパイルを行うことができます.
version (Win32){
//
}
else
{
//
..
}
デバッグ条件も使用できます.
debug{
//
}
else
{
//
}
または、
debug printf ("hello");
静的条件のコンパイル:
const
int
n
=
1
;
static
if
(n
==
1
) writefln (
"
hello
"
);
else
writefln (
"
world
"
);
タイプチェック:
int
n
=
3
;
if
(
is
(n[])) writefln (
"
like array
"
);
if
(
is
(n:
int
)) writefln (
"
is an integer
"
);
7、HTMLを埋め込む.
1つのHTMLファイルでは、
の間の部分をDコードとしてコンパイルすることができる.たとえば、次のコードがあります.<
h1
>
This is a test
h1
>
<
code
>
import std.c.stdio;int
<
font
size
=+1
><
b
>
main
b
>
font
>
(){
<
span
style
="color:red"
>
printf
span
>
(
<
u
>
"
hello world
"
u
>
);
return 0;}
code
>
<
hr
/>
<
h1
>
End
h1
>
HTMLファイルとして保存し、dmdコンパイラで直接コンパイルできます.