W skrócie: Chciałbym stworzyć program, który bierze stringa (bądź to z konsoli, bądź to z innych źródeł) i na podstawie jego zawartości wykonać odpowiednie funkcje (taki kalkulator konsolowy). Mam trzy klasy; Liczba, Operator i Zdanie. Konstruktor Zdania wyłapuje ze stringa na wejściu wszystkie Liczby i Operatory wstawia do odpowiednich tablic. Natomiast z rozpoznawaniem operatorów mam problem, bo są one powiązane z jakimiś funkcjami, które trzeba wykonać na liczbach. Aktualnie klasa wygląda jak poniżej, ale nie wiem, jak zapisać, kod, który określiłby typ każdej instancji Operatora bez użycia tego switcha w FunkcjiOperatora? Czy można stworzyć taki wskaźnik do funkcji. Słyszałem, że da się to zrobić z użyciem func<T>(a1,a2,....), ale nie wiem, jak tego dokonać.
class Operator
{
string type;
public Liczba Return(Liczba l) { return l; }
public Liczba First(Liczba l1, Liczba l2) { return l1; }
public Liczba Second(Liczba l1, Liczba l2) { return l2; }
public Liczba Iloraz(Liczba l1, Liczba l2) { /*Kod na iloraz*/ }
public Liczba Iloczyn(Liczba l1, Liczba l2) //Kod
public Liczba Różnica(Liczba l1, Liczba l2) //Kod
public Liczba Suma(Liczba l1, Liczba l2) //Kod
public Liczba FunkcjaOperatora(Liczba l)
{
switch(type)
{
case "Return"
}
}
public Liczba FunkcjaOperatora(Liczba l1,Liczba l2)
{
switch(type)
{
case "Iloraz"
//i tak dalej
}
}
public Operator(char input)
{
switch (input)
{
case ' ':
this.type = "Return";
break;
case '+':
this.type = "Suma";
break;
// i tak dalej...
}
}
}