Après avoir vu this session PDC je voulais essayer d'apprendre un peu de F #. J'ai donc pensé que le meilleur moyen serait de réécrire en F # quelque chose que j'ai déjà fait en C# mais mon cerveau refuse de penser en mode fonctionnel. J'ai cette classe abstraite qui a quelques méthodes abstraites et quelques méthodes virtuelles. Je voudrais également remplacer certaines méthodes virtuelles. Cette classe est écrite en C# et compilée et je n'ai pas l'intention de la réécrire en F #. Donc, ma question est la suivante:Comment implémenter une classe abstraite en F #?
- que quelqu'un a un court échantillon de la façon de mettre en œuvre une classe abstraite, méthode abstraite et méthode virtuelle
- puis-je avoir surchargé les constructeurs?
- Y at-il des contraintes si je veux le compiler dans une DLL et le rendre disponible pour mes programmes basés sur C#.
Toute aide serait appréciée.
Mise à jour: J'ai vraiment apprécié la réponse de Brian, mais il est toujours pas clair pour moi donc je tiens à préciser. Supposons que ce soit ma classe abstraite écrite en C# et compilée en dll. Comment l'implémenter en F #?
public abstract class MyAbstractClass
{
public abstract Person GetFullName(string firstName, string lastName);
public abstract bool TryParse(string fullName, out Person person);
public virtual IEnumerable<Person> GetChildren(Person parent)
{
List<Person> kids = new List<Person>();
foreach(Child person in GroupOfPeople)
{
if(person.Parent == parent)
kids.Add(child as Person);
}
return kids;
}
public virtual IEnumerable<Child> GroupOfPeople { get; set; }
}
documentation pour quiconque est à la recherche de quelques F # ressources: - si tout autre F # est intéressé à obtenir des documents que j'ai trouvé sur le blog de Don Syme (créateur de F #) free chapters of his book F# Expert. Vous pouvez les télécharger en format doc.
- monde réel Programmation fonctionnelle par Tomas Petricek a free chapter here
D'autres ressources qui pourraient intéresser:
- Scott Hanselman's blog poste
- Dustin Campbell's blog
- Tomas Petricek's blog
- La place pour F # - hubFS
- F# WIKI
- Microsoft Research
Est-il possible pour un F # classe abstraite pour implémenter une interface aussi? – Stringer
J'ai édité pour montrer un moyen de le faire. – Brian
Actuellement, je voulais dire qu'il est possible d'avoir un membre abstrait qui interface une interface. Par exemple. interface IBaz avec membre abstrait Baz: int -> int – Stringer