Quel indicateur utilisez-vous pour la déclaration de membre dans F #? Je préfère ce em> est de nombreuses lettres et x em> est utilisé autrement. P> p>
6 Réponses :
J'ai tendance à utiliser une sorte d'initiales qui représentent le type de type:
Vous n'avez pas de système. Je me demande si j'aurais un, et je suis sûr qu'il y aura un paradigme avec son propre livre un jour bientôt. J'ai tendance à utiliser la première lettre du nom de type, comme Benjol. P>
C'est un degré de liberté en F # nous pouvions manifestement à faire sans. :) p>
A signifie "type" dans la plupart des langues FP. Je me demande si c'est correct d'utiliser des membres de l'instance
@napoléons Je ne connais pas la plupart des langues FP, mais vous avez "A (ou"
Oui, cela apparaît juste plus cohérent
@napoléons Dans quel cas vous aurez besoin de recourir à l'une des 25 autres lettres de l'alphabet (anglais) ou de leurs combinaisons. Ce qui vous laisse avec votre dilemme d'origine.
"C'est un degré de liberté en F # nous pouvions manifestement à faire sans." Très vrai.
Vous pouvez généralement faire sans le degré de liberté supplémentaire, mais il est utile lorsque vous créez une expression d'objet dans un membre. De cette façon, vous pouvez vous référer à l'instance extérieure et à l'instance interne à l'aide d'identificateurs différents.
Ouais. Était facetieuse. Désolé.
Je fais presque toujours utiliser Les options que j'ai vues sont: p> L'option basée sur le nom de type a du sens (et est bon lorsque vous imbriquez des expressions d'objets à l'intérieur d'une Type), mais je pense qu'il pourrait être assez difficile de trouver une abréviation de deux / trois raisonnable pour chaque nom de type. p> p> x code> comme nom de cette instance em>. Il n'y a pas de logique derrière cela, de côté du fait qu'il est plus court que d'autres options.
Il y a toujours 'me.foo', après vb.net. J'utilise 'x' ou 'ceci'.
J'utilise ceci code> donc je ne fais pas peur des programmeurs C # en regardant mon code.
auto code> semble être utilisé dans la communauté OCAML. Voir ici . Aussi python, Delphi, SmallTalk. Bien que je suppose que OCAML devrait être l'influent ici.
J'ai tendance largement à utiliser J'ai essayé de convertir en un style code> x.Methodname code>, similaire aux deux livres que j'apprends de: Programmation fonctionnelle du monde réel em> et expert f # em>. Jusqu'à présent, je ne réussis pas, principalement parce que nous faisant référence à Je suppose que ce que je dis, c'est qu'il devrait y avoir une convention significative. Utilisation Self.Methodname code>, pour la seule raison pour laquelle
auto code> représente l'instance actuelle par convention dans l'autre langue que j'utilise le plus: Python. Venez penser à cela, j'ai utilisé Delphi depuis un certain temps et ils ont
auto code> au lieu de
ceci code>. P>
x code> plutôt que
auto code> (ou
ceci code>) dans le corps de la méthode me confond toujours. p>
Ce code> ou
auto code> a déjà été normalisé par d'autres langues. Et je ne trouve personnellement pas que l'économie de trois lettres soit aussi utile. P>
La logique que j'utilise est la suivante: Si je n'utilise pas la référence d'instance à l'intérieur de la définition de membre, j'utilise un double soulignement ('__'), des expressions de la Let-liaison. Si je référencement l'instance à l'intérieur de la définition (que je ne fais pas souvent), j'ai tendance à utiliser 'x'. P>
Si vous n'utilisez pas la référence de l'instance, votre définition de membre ne serait-elle pas préférable d'être statique? Serait la syntaxe correcte pour cette sémantique et éliminerait complètement l'identifiant d'instance.
@ALExander: Pas nécessairement. Par exemple, une valeur est transmise à un constructeur et exposé (éventuellement après avoir appliqué une fonction triviale) comme une propriété en lecture seule. Il n'est pas nécessaire d'accéder à l'instance dans la définition du membre. Même si je stockais l'entrée de la CTOR dans une liaison privée, je n'aurais toujours pas besoin d'accéder au symbole d'identification d'instance ... et les données sont toujours pertinentes pour l'instance et non le type.
@PBLASUCCI Vous ne pouvez pas voir le cas que vous en parlez, mais je me suis dit que vous conscient que vous utilisiez d'autres méthodes d'instance à partir de la «Nomme», donc oui, j'ai sauté à une mauvaise conclusion ici ... (peut voir votre texte maintenant , un problème avec le JavaScript ici, semble-t-il; alors oui, il y a plus d'un cas où cela a du sens).
@PBLASUCCI _ semble intéressant et cohérent avec la convention FP. Je vais essayer avec un. Par exemple Access
Est-ce que cela fonctionne réellement? Pour moi, type t = membre _.method () = 1 code> ne compile pas, tandis que
type t = membre A.method () = 1 code> fait ...
@KVB: Non, je pense que cela ne fonctionne pas (il doit être le nom, pas un motif). J'ai vu des gens en utilisant un double soulignement comme solution de contournement pour cela.
Excuses. J'ai mal tapé. Je voulais dire double soulignement ('__'). Désolé. Ma faute! J'ai édité ma réponse en conséquence.
Puisque je travaille dans le monde .Net, j'ai tendance à utiliser "ceci" sur l'hypothèse que la plupart des personnes .NET qui rencontrent F # comprendront sa signification. Bien sûr, l'autre bord de cette épée est qu'ils pourraient avoir l'idée que "ceci" est la forme requise. p>
.NET Auto-Documentation concerne de côté, je pense que je préférerais: "x" en général, ou - comme Benjol - une abréviation du nom de la classe (par exemple "ST" pour le suffixeur, etc.). < / p>
Ironpython, IronRuby, VB.Net, F # et plus sont la langue .NET et n'utilise ni 'this'. Est-ce que tu m'as moi c # monde?
Oui, je suis désolé, je voulais dire c #. Ici, je suis un avocat long de la programmation multi-langues sous .Net et je me retrouve sur mon propre Petard! MDR. La plupart des programmeurs .NET que je rencontre sont des programmeurs i> C #, mais c'est une mauvaise forme de moi pour supposer automatiquement, surtout quand je suis un tel proposant de F #.
Voir également d'autres réponses ici: Stackoverflow.com/questions/1793484/...