回答:
かっこなし!
Dの関数とテンプレート関数は、値、メソッド(役に立たない)、およびプロパティとして呼び出すことができます。
まだ誰も言っていないなんて信じられない。バイトを節約するものをリストします:
fun()とfun!()()短縮しますfun(変数がない場合fun)。fun(par)に短縮されますpar.fun(parプロパティ/メソッドfunがparないこと、およびのような式ではないと想定5+2)。fun!(T)() 短縮する fun!Tfun!(T)(par)短縮par.fun!T(parプロパティ/メソッドがないと仮定fun)そしてオブジェクトと:
new cls()短くnew cls(もっとJavaScriptの誰?)obj.fun()そしてobj.fun!()()短くするobj.funobj.fun!(T)() 短縮する obj.fun!T最後に、古いバージョンを使用してください。コードを短縮する非推奨の機能を使用できます。とはいえ、最良のアドバイス:Dはコードゴルフには向いていません。それは素晴らしい言語です、ただコードゴルフのためではありません。
Dには型推論とautoキーワードがあります。オブジェクトがない場合にはint、その後、autoおそらく短いです。
auto連想配列を作成するときに機能しKeyType[ValueType]ますか?
auto asd = ["a":1, "b": 2];動作しますが、以降KeyType[ValueType]の代わりに行くautoのキーワードそれは常にリテラルを構築することができないため種類で動作するかどうか、私は知らない
auto arr = ["a": true, "b": 6];動作します。キーと値は互換性のあるタイプである必要があります
Dはメソッドチェーンが得意ですが、
str.toLower.strip().split("").sort();
と同じです
sort(split(strip(str.toLower),""));
C / C ++と同様に、またはにmainすることができますが、常により短くなります。intvoidvoid main(){}int main(){return my_func_returning_int;}
int main(){return output}短くないでしょうか?
import std.stdio;void main(){write(7);}必要な場合は、それが必要です。私は質問が義務付けはないだろうプログラムは多くの言語は、リターンコードを設定することはできませんので、数を返す
Dは、マルチパラダイム(オブジェクト機能)システムプログラミング言語として、TIMTOWTDIを採用しているようです。
適切な例として、プログラムのargvを記述します。
import std.stdio, std.array, std.algorithm;
void main(string[] args) {
for(int i=0;i<args.length;writeln(args[i++])){};
foreach(a;args)writeln(a);
each!writeln(args);
}
forループC-スタイルを注意することは必要で{}、空のブロックとしてや、空白文としてセミコロンまたは何も受け付けません。この場合には。通常、または;何もしません。
char*代わりに使用しstringてバイトを保存できますか?
function D main parameters must be main() or main(string[] args)さらに、charは文字通り1文字でchar*あり、文字通り1文字へのポインタであり、char[]文字リテラルの配列です(文字列は異なります)。D!= C || C ++
DにはいくつかのタイプのC#スタイルのラムダ式があり、割り当ててスタンドアロンで使用できます。
(int a,int b)=>a*b;
auto a=(int a,int b)=>a*b;
ただし、C#とは異なり、DにはHaskellレベルの型推論がないため、署名の型は依然として必要です。
T f(T)(T a,T b){return a + b}推測する必要がありますf(5);
他の引数なしでオブジェクトの関数を呼び出す
reverse(x);
ほとんどの場合、
x.reverse;
バイト以上を剃る。
これは.、LHSを暗黙の最初の引数にし、テンプレート化により、引数に適切な関数を選択できるためです。
x.reverse(y, z)長いのでドットである
x.reverse(y,z)reverse(x,y,z)同じバイト数を持っています。
x.reverse(y, z)しましたx.reverseか?