• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Odniesienia do funkcji w C#, użycie notacji z <>

Object Storage Arubacloud
0 głosów
194 wizyt
pytanie zadane 23 grudnia 2016 w C# przez Zwatotem Nowicjusz (120 p.)

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

 

1 odpowiedź

0 głosów
odpowiedź 24 grudnia 2016 przez Sinnley Stary wyjadacz (12,810 p.)
Wrzuć cały programu na np. wklej.org. Ciężko coś się połapać z takiego wycinka.
komentarz 24 grudnia 2016 przez Zwatotem Nowicjusz (120 p.)
Przepraszam, faktycznie mogłem się wyrazić niejasno. Cóż, to mój pierwszy wpis na tego typu forum. Już patrząc w oderwaniu od tego konkretnego przypadku chciałbym się dowiedzieć jak używać w C# notacji func(arg1,arg2...). Chciałbym za jej pomocą zaimplementować możliwość różnego działania jakiejś funkcji w zależności od wartości T. Coś w stylu: http://wklej.org/id/2997512/
komentarz 24 grudnia 2016 przez Sinnley Stary wyjadacz (12,810 p.)
A jaki jest cel tego zabiegu? Zwykle prościej da się to zrobić z pomocą przeciążenia funkcji, ew. nawet zwykłego switcha.
komentarz 24 grudnia 2016 przez Sinnley Stary wyjadacz (12,810 p.)

Nawiasem mówiąc w C# NIE MA czegoś takiego jak wskaźnik na funkcje. Zamiast tego możesz użyć tego : LINK

komentarz 24 grudnia 2016 przez Zwatotem Nowicjusz (120 p.)
Ewentualnie mógłbym użyć funkcji wirtualnej i przesłaniać ją odpowiednimi funkcjami z klas dziedziczących. Wtedy zminimalizowałbym ilość użytych w kodzie switchy.
komentarz 24 grudnia 2016 przez Sinnley Stary wyjadacz (12,810 p.)
Mógłbyś, ale wszystko zależy od tego do czego ci to potrzebne.

Jeśli chcesz zminimalizować powtarzające się switche to wrzuć je do jakiejś zewnętrznej metody.

Podobne pytania

0 głosów
1 odpowiedź 787 wizyt
pytanie zadane 28 maja 2018 w C i C++ przez periedynek Obywatel (1,320 p.)
+1 głos
0 odpowiedzi 331 wizyt
pytanie zadane 27 grudnia 2020 w C# przez Szyszka Gaduła (3,490 p.)
+1 głos
1 odpowiedź 1,068 wizyt
pytanie zadane 17 czerwca 2016 w C# przez programer Obywatel (1,190 p.)

92,551 zapytań

141,393 odpowiedzi

319,523 komentarzy

61,936 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...