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 par
tidak memiliki properti / metode fun
, serta par
tidak menjadi ekspresi seperti 5+2
).
fun!(T)()
disingkat menjadi fun!T
fun!(T)(par)
disingkat menjadi par.fun!T
(dengan asumsi par
tidak 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.fun
obj.fun!(T)()
disingkat menjadi obj.fun!T
Satu 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
,double
danreal
,nan
adalah nilai yang harus ditangani, dan, sebagaimana ditentukan oleh IEEE 754, NaN tidak membandingkan sama dengan dirinya sendiri.Berarti,
jauh lebih pendek dari
Jelas, selalu menggunakan
math.isNaN
untuk nyata kode. ;)sumber
D memiliki tipe inferensi dan
auto
kata kunci. Jika objek tidakint
, makaauto
mungkin lebih pendek.sumber
auto
berfungsi ketika membangun array asosiatif denganKeyType[ValueType]
sintaks?auto asd = ["a":1, "b": 2];
berfungsi, tetapi karenaKeyType[ValueType]
akan menggantikanauto
kata kunci, saya tidak tahu apakah itu akan selalu bekerja dengan jenis yang literalnya tidak dapat dikonstruksiauto arr = ["a": true, "b": 6];
berfungsi, kunci dan nilai harus dari jenis yang kompatibelD hebat dalam metode chaining, tetapi:
sama dengan
dan biasanya yang tidak dirantai lebih pendek, yang baru saya sadari, yang memungkinkan saya mempersingkat jawaban saya untuk Kelola Sampah Jadi : D
sumber
Seperti C / C ++,
main
bisaint
atauvoid
, tetapivoid main(){}
akan selalu lebih pendek dariint main(){return my_func_returning_int;}
.sumber
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 kembaliD, sebagai bahasa pemrograman sistem multi-paradigma (Objek Fungsional), tampaknya merangkul TIMTOWTDI, atau Ada Lebih Dari Satu Cara Untuk Melakukannya.
Contoh kasus, menulis argumen program:
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.sumber
char*
tempatstring
untuk menyimpan byte?function D main parameters must be main() or main(string[] args)
selain itu,char
secara harfiah satu karakter,char*
adalah penunjuk ke harfiah satu karakter danchar[]
merupakan array literal karakter (string berbeda). D! = C || C ++D memiliki beberapa jenis ekspresi lambda gaya C #, yang dapat ditetapkan dan berdiri sendiri:
Namun, tidak seperti C #, tipe tanda tangan masih diperlukan karena D tidak memiliki tipe kesimpulan Haskell.
https://dlang.org/spec/expression.html#Lambda
sumber
T f(T)(T a,T b){return a + b}
harus menyimpulkan T sebagai int dif(5);
Memanggil fungsi pada objek tanpa argumen lain
hampir selalu dapat dipersingkat menjadi
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.sumber
x.reverse(y, z)
itu lebih lama karena titikx.reverse(y,z)
danreverse(x,y,z)
memiliki jumlah byte yang sama.x.reverse(y, z)
kex.reverse
?Jika pertanyaannya membutuhkan program lengkap,
module
deklarasi itu secara mengejutkan tidak diperlukan.* batuk * Jawa, siapa pun? * membersihkan tenggorokan * Sebenarnya ,
module
sistem D lebih tua dari Java.sumber