Jawaban:
Lihat, tidak ada orangtua!
Fungsi D dan fungsi templat dapat disebut sebagai nilai, metode (tidak akan membantu), dan properti.
Saya tidak percaya belum ada yang mengatakan ini. Saya akan mencantumkan yang menyimpan byte:
fun()dan fun!()()disingkat menjadi fun(dengan asumsi tidak ada variabel fun).fun(par)disingkat menjadi par.fun(dengan asumsi partidak memiliki properti / metode fun, serta partidak menjadi ekspresi seperti 5+2).fun!(T)() disingkat menjadi fun!Tfun!(T)(par)disingkat menjadi par.fun!T(dengan asumsi partidak memiliki properti / metode fun)Dan dengan benda-benda:
new cls()disingkat menjadi new cls(Lebih JavaScript siapa saja?)obj.fun()dan obj.fun!()()disingkat menjadiobj.funobj.fun!(T)() disingkat menjadi obj.fun!TSatu hal terakhir, gunakan versi lama . Ini memungkinkan Anda untuk menggunakan fitur usang yang mempersingkat kode Anda. Yang mengatakan, saran terbaik: D tidak baik untuk kode-golf. Ini adalah bahasa yang hebat, tidak untuk golf kode.
D adalah JavaScript.
Tentu saja tidak. Tetapi, ketika berurusan dengan float, doubledan real, nanadalah nilai yang harus ditangani, dan, sebagaimana ditentukan oleh IEEE 754, NaN tidak membandingkan sama dengan dirinya sendiri.
writeln(double.nan == double.nan); // false
Berarti,
writeln(value!=value); // only true for nan
jauh lebih pendek dari
import std.math;
writeln(isNaN(value));
Jelas, selalu menggunakan math.isNaNuntuk nyata kode. ;)
D memiliki tipe inferensi dan autokata kunci. Jika objek tidak int, maka automungkin lebih pendek.
autoberfungsi ketika membangun array asosiatif dengan KeyType[ValueType]sintaks?
auto asd = ["a":1, "b": 2];berfungsi, tetapi karena KeyType[ValueType]akan menggantikan autokata kunci, saya tidak tahu apakah itu akan selalu bekerja dengan jenis yang literalnya tidak dapat dikonstruksi
auto arr = ["a": true, "b": 6];berfungsi, kunci dan nilai harus dari jenis yang kompatibel
D hebat dalam metode chaining, tetapi:
str.toLower.strip().split("").sort();
sama dengan
sort(split(strip(str.toLower),""));
dan biasanya yang tidak dirantai lebih pendek, yang baru saya sadari, yang memungkinkan saya mempersingkat jawaban saya untuk Kelola Sampah Jadi : D
Seperti C / C ++, mainbisa intatau void, tetapi void main(){}akan selalu lebih pendek dari int main(){return my_func_returning_int;}.
int main(){return output}akan lebih pendek?
import std.stdio;void main(){write(7);}itulah yang dibutuhkan. Saya ragu pertanyaan akan mengamanatkan program mengembalikan nomor karena banyak bahasa tidak dapat menetapkan kode kembali
D, sebagai bahasa pemrograman sistem multi-paradigma (Objek Fungsional), tampaknya merangkul TIMTOWTDI, atau Ada Lebih Dari Satu Cara Untuk Melakukannya.
Contoh kasus, menulis argumen program:
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);
}
Perhatikan bahwa C-style for-loop membutuhkan {}sebagai blok kosong dan tidak akan menerima titik koma atau tidak sama sekali sebagai pernyataan kosong, dalam hal ini . Biasanya, atau ;tidak ada operasi.
char*tempat stringuntuk menyimpan byte?
function D main parameters must be main() or main(string[] args)selain itu, charsecara harfiah satu karakter, char*adalah penunjuk ke harfiah satu karakter dan char[]merupakan array literal karakter (string berbeda). D! = C || C ++
D memiliki beberapa jenis ekspresi lambda gaya C #, yang dapat ditetapkan dan berdiri sendiri:
(int a,int b)=>a*b;
auto a=(int a,int b)=>a*b;
Namun, tidak seperti C #, tipe tanda tangan masih diperlukan karena D tidak memiliki tipe kesimpulan Haskell.
T f(T)(T a,T b){return a + b}harus menyimpulkan T sebagai int dif(5);
Memanggil fungsi pada objek tanpa argumen lain
reverse(x);
hampir selalu dapat dipersingkat menjadi
x.reverse;
untuk mencukur satu byte atau lebih.
Ini karena .LHS menjadikan argumen pertama yang implisit, dan templating memungkinkan kita memilih fungsi yang tepat untuk argumen tersebut.
x.reverse(y, z)itu lebih lama karena titik
x.reverse(y,z)dan reverse(x,y,z)memiliki jumlah byte yang sama.
x.reverse(y, z)ke x.reverse?