Po obejrzeniu sesji PDC this chciałem spróbować nauczyć się trochę F #. Pomyślałem więc, że najlepszym rozwiązaniem byłoby przepisanie w języku F # czegoś, co już zrobiłem w C#, ale mój mózg po prostu odmawia myślenia w trybie funkcjonalnym. Mam tę klasę abstrakcyjną, która ma kilka metod abstrakcyjnych i kilka metod wirtualnych. Chciałbym również zastąpić niektóre metody wirtualne. Ta klasa jest napisana w C# i skompilowana i nie mam zamiaru przepisywać jej w F #. Więc moje pytanie brzmi:Jak zaimplementować klasę abstrakcyjną w języku F #?
- czy ktoś ma krótką próbkę jak zaimplementować klasę abstrakcyjną, sposób abstrakcyjny i metody wirtualny
- mogę mieć przeciążony konstruktorów?
- czy są jakieś ograniczenia, jeśli chcę skompilować je w bibliotekę dll i udostępnić je moim programom opartym na C#.
Każda pomoc zostanie doceniona.
Aktualizacja: ja naprawdę bardzo cenione odpowiedź Briana, ale to nadal nie jest dla mnie jasne, więc chcę wyjaśnić. Udawajmy, że to moja abstrakcyjna klasa napisana w C# i skompilowana w dll. Jak zaimplementować go w 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; }
}
Niektóre dokumentacja dla każdego, kto szuka niektórych F # zasobów: - czy jakakolwiek inna F # jest zainteresowany, aby uzyskać pewne dokumentacji znalazłem na Don Syme'S (twórca F #) Blog free chapters of his book F# Expert. Możesz pobrać te w formacie doc.
- Real World Programowanie funkcyjne Tomas Petříček ma free chapter here
niektórych innych zasobów, które mogłyby zainteresowania:
- Scott Hanselman's blog pocztowe
- Dustin Campbell's blog
- Tomas Petricek's blog
- miejsce dla F # - hubFS
- F# WIKI
- Microsoft Research
Czy jest możliwe dla F # abstrakcyjnej klasy implementują interfejs też? – Stringer
Edytowałem, aby pokazać sposób na zrobienie tego. – Brian
Rzeczywiście miałem na myśli, aby mieć członka abstrakcyjnego, który interfejs interfejs. Na przykład. interfejs IBaz z element abstrakcyjny Baz: int -> int – Stringer