8
votes

F # Syntaxe d'instance

Quel indicateur utilisez-vous pour la déclaration de membre dans F #? Je préfère xxx

ce est de nombreuses lettres et x est utilisé autrement.

f#

1 commentaires

Voir également d'autres réponses ici: Stackoverflow.com/questions/1793484/...


6 Réponses :


1
votes

J'ai tendance à utiliser une sorte d'initiales qui représentent le type de type: xxx


0 commentaires

3
votes

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.

C'est un degré de liberté en F # nous pouvions manifestement à faire sans. :)


7 commentaires

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" ) pour signifier type dans F #; En ML, vous avez aussi '' A, etc. - A en soi est un identifiant normal que vous pouvez utiliser, mais vous le souhaitez.


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é.



13
votes

Je fais presque toujours utiliser x comme nom de cette instance . Il n'y a pas de logique derrière cela, de côté du fait qu'il est plus court que d'autres options.

Les options que j'ai vues sont: xxx

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.


3 commentaires

Il y a toujours 'me.foo', après vb.net. J'utilise 'x' ou 'ceci'.


J'utilise ceci donc je ne fais pas peur des programmeurs C # en regardant mon code.


auto semble être utilisé dans la communauté OCAML. Voir ici . Aussi python, Delphi, SmallTalk. Bien que je suppose que OCAML devrait être l'influent ici.



1
votes

J'ai tendance largement à utiliser Self.Methodname , pour la seule raison pour laquelle auto 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 au lieu de ceci .

J'ai essayé de convertir en un style x.Methodname , similaire aux deux livres que j'apprends de: Programmation fonctionnelle du monde réel et expert f # . Jusqu'à présent, je ne réussis pas, principalement parce que nous faisant référence à x plutôt que auto (ou ceci ) dans le corps de la méthode me confond toujours.

Je suppose que ce que je dis, c'est qu'il devrait y avoir une convention significative. Utilisation Ce ou auto a déjà été normalisé par d'autres langues. Et je ne trouve personnellement pas que l'économie de trois lettres soit aussi utile.


0 commentaires

0
votes

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'.


7 commentaires

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 ne compile pas, tandis que type t = membre A.method () = 1 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.



1
votes

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.

.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>


2 commentaires

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 C #, mais c'est une mauvaise forme de moi pour supposer automatiquement, surtout quand je suis un tel proposant de F #.