Regardez, pas de parens!
Les fonctions et les fonctions de modèle de D peuvent être appelées comme valeurs, méthodes (n'aidera pas) et propriétés.
Je ne peux pas croire que personne n'ait encore dit cela. Je vais lister ceux qui économisent des octets:
fun()
et fun!()()
raccourcir à fun
(en supposant qu'il n'y a pas de variable fun
).
fun(par)
se raccourcit en par.fun
(en supposant qu'il par
n'a pas de propriété / méthode fun
, ainsi que de par
ne pas être une expression comme 5+2
).
fun!(T)()
raccourcit à fun!T
fun!(T)(par)
raccourci à par.fun!T
(en supposant qu'il par
n'y a pas de propriété / méthode fun
)
Et avec des objets:
new cls()
raccourcit à new cls
(Plus de JavaScript pour tout le monde?)
obj.fun()
et obj.fun!()()
raccourcir àobj.fun
obj.fun!(T)()
raccourcit à obj.fun!T
Une dernière chose, utilisez les anciennes versions . Il vous permet d'utiliser des fonctionnalités obsolètes qui raccourcissent votre code. Cela dit, le meilleur conseil: D n'est pas bon pour le golf de code. C'est un super langage, mais pas pour le golf de code.
D est JavaScript.
Évidemment pas. Mais, lorsqu'il s'agit de
float
,double
etreal
,nan
est une valeur qui doit être gérée, et, comme spécifié par IEEE 754, NaN ne se compare pas à lui-même.Sens,
est bien plus court que
De toute évidence, toujours utiliser
math.isNaN
pour vrai code. ;)la source
D a une inférence de type et un
auto
mot clé. Si l'objet ne l'est pasint
, alors ilauto
est probablement plus court.la source
auto
lors de la création d'un tableau associatif avec laKeyType[ValueType]
syntaxe?auto asd = ["a":1, "b": 2];
fonctionne, mais puisqueKeyType[ValueType]
cela remplacerait leauto
mot - clé, je ne sais pas si cela fonctionnera toujours avec des types pour lesquels des littéraux ne peuvent pas être construitsauto arr = ["a": true, "b": 6];
fonctionne, les clés et les valeurs doivent être de types compatiblesD est excellent pour le chaînage de méthodes, mais:
est le même que
et généralement celle non enchaînée est plus courte, ce que je viens de réaliser, ce qui me permet de raccourcir ma réponse à Manage Trash So : D
la source
Comme C / C ++,
main
peut êtreint
ouvoid
, maisvoid main(){}
sera toujours plus court queint main(){return my_func_returning_int;}
.la source
int main(){return output}
plus court?import std.stdio;void main(){write(7);}
ce qui est nécessaire. Je doute qu'une question obligerait le programme à renvoyer un numéro car de nombreuses langues ne peuvent pas définir de codes de retourD, en tant que langage de programmation de systèmes multiparadigm (Object Functional), semble embrasser TIMTOWTDI, ou il y a plus d'une façon de le faire.
Exemple concret, écrivant l'argv du programme:
Notez que la boucle for de style C nécessite
{}
comme bloc vide et n'acceptera pas de point-virgule ou rien comme instruction vide, dans ce cas . Habituellement,ou
;
non.la source
char*
à la place destring
pour enregistrer un octet?function D main parameters must be main() or main(string[] args)
de plus,char
est littéralement un caractère,char*
est un pointeur vers littéralement un caractère etchar[]
est un tableau de littéraux de caractères (les chaînes sont différentes). D! = C || C ++D a quelques types d'expressions lambda de style C #, qui peuvent être attribuées et autonomes:
Cependant, contrairement à C #, les types de signature sont toujours nécessaires car D n'a pas d'inférence de type au niveau Haskell.
https://dlang.org/spec/expression.html#Lambda
la source
T f(T)(T a,T b){return a + b}
devrait conclure T comme int dansf(5);
Appel d'une fonction sur un objet sans autre argument
peut presque toujours être raccourci
pour raser un octet ou plus.
En effet, le
.
fait du LHS un premier argument implicite, et le modèle nous permet de choisir la bonne fonction pour les arguments.la source
x.reverse(y, z)
est plus long à cause du pointx.reverse(y,z)
etreverse(x,y,z)
ont le même nombre d'octets.x.reverse(y, z)
de comparerx.reverse
?Si la question nécessite un programme complet, la
module
déclaration est étonnamment inutile.* toux * Java, n'importe qui? * se racle la gorge * En fait , le
module
système de D est plus ancien que celui de Java.la source