Les deux sont identiques. Les attributs de fonction peuvent aller de chaque côté d'une fonction. par exemple.
pure Bar foo() {...}
et
Bar foo() pure {...}
sont identiques. La même chose vaut pour pure
, nothrow
, const
, etc. Ceci est probablement très bien pour la plupart des attributs, mais il devient assez ennuyeux quand const
, immutable
, ou inout
est impliqué, car ils peuvent tous affecter le type de retour. Pour que ces attributs affectent le type de retour, les parens doivent être utilisés. par exemple.
const(Bar) foo() {...}
renvoie un const Bar
, alors
Bar foo const {...}
et
const Bar foo() {...}
retour un mutable Bar
, mais la fonction membre lui-même est const
. Dans la plupart des cas ce que vous voulez est probablement soit
Bar foo() {...}
ou
const(Bar) foo() const {...}
car il est souvent le cas que d'avoir une force de fonction de membre const
vous pour revenir const
(surtout si vous retournez une variable membre), mais vous pouvez avoir n'importe quelle combinaison const
entre la fonction membre et son type de retour juste tant qu'elle fonctionne avec ce que fait la fonction (par exemple retourner une référence mutable à une variable membre ne fonctionne pas à partir d'une fonction const
).
Maintenant personnellement, je souhaite que mettre const
sur le côté gauche était illégal, en particulier quand l'excuse que tous les attributs de fonction peuvent aller de chaque côté de la fonction n'est pas vraiment vrai de toute façon (par exemple static
, public
, and private
don't seem to be able to go on the right-hand side), mais malheureusement , c'est comme ça à ce moment-ci, et je doute que ça va changer, parce que personne n'a pu convaincre Walter Bright que c'est une mauvaise idée de laisser const
aller sur la gauche.
Cependant, il est généralement considéré comme une mauvaise pratique de mettre const
, immutable
ou inout
sur le côté gauche de la fonction, à moins qu'ils utilisent parens et donc d'affecter le type de retour, précisément parce que si elles sont sur la gauche sans parens, vous devez immédiatement vous demander si le programmeur qui l'a fait voulait modifier la fonction ou le type de retour. Donc, le laisser sur la gauche est assez inutile (à part peut-être pour le code générique, mais ce n'est toujours pas la peine de le permettre à mon humble avis).
duplication possible de [Provide @property pour les structures const et non-const dans D] (http://stackoverflow.com/questions/24160745/provide-property-for-const-and-non-const-structures-in -d) – burner