![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 78 Pomógł: 9 Dołączył: 2.02.2011 Skąd: undefined Ostrzeżenie: (0%) ![]() ![]() |
Zrobiłem dla własnych potrzeb parser wyrażeń matematycznych (na razie niezbyt skomplikowanych), którym posługuję się w swoim ggbocie. Można deklarować w nim własne zmienne i operować na nich wedle potrzeb. Obsługuje także podstawowe jednoargumentowe (jak na razie) funkcje matematyczne. Są to moje początki w tworzeniu klas, więc proszę o wyrozumiałość. W razie jakiś pytań bądź błędów proszę pisać, będę w miarę możliwości odpisywał.
mexp class Sposób użycia:
Wynik: Kod //1 r=36.462159607208; //2 r=8.9119577782213; //3 r=false; ($t->display_error()) (34-(312+(9*(-1)$))) | SYNTAX ERROR: Invalid operator '$' at position '17' DODANO: A za wcześnie się mnie zapisz wcisnęło i po chwili wyedytowałem:) Ten post edytował shinuexx 30.12.2011, 19:36:02 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
No a gdzie on?
-------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Po 1. Brakuje mi method chaining
Po 2. np. to
str_split Cytat * @return boolean/number $result - wynik wyrażenia, w przypadku niepowodzenia 'false' Nie, nie ucz się takiego zwracania. Ma zwrócić wynik lub rzucić błędem/wyjątkiem (zależnie od sytuacji) Cytat * mexp::count() - obliczenie wartosci wyrazenia w formacie RPN W php jest funkcja count więc nie używaj tej nazwy.
Przecież factorial nie jest statyczną metodą. -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 78 Pomógł: 9 Dołączył: 2.02.2011 Skąd: undefined Ostrzeżenie: (0%) ![]() ![]() |
Ad 1.
Wydaje mi się że mogę dodać tylko do addVar(); Ad 2. Fakt;P Całkowicie nie zauważyłem tej funkcji:] A co do błędów. To myślałem nad tym aby zrobić to wyjątkami ale wtedy trochę utrudniłoby to mój zamysł. Mianowicie chciałem aby można to było łatwo zaimplementować gdziekolwiek indziej. To na co zwróciłeś uwagę to błąd składni bądź wynik wyrażenia, co nie wiem czy można nazwać wyjątkiem. Nie miałem tutaj innego pomysłu jak wyświetlić położenie błędu w czytelny dla użytkownika końcowego sposób. Factorial chciałem aby można było także używać poza obiektem. Wystarczyło by mi tutaj tylko dodanie static do deklaracji?? |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Ad 1. Wydaje mi się że mogę dodać tylko do addVar(); I to miałem na myśli akurat ;d Factorial chciałem aby można było także używać poza obiektem. Wystarczyło by mi tutaj tylko dodanie static do deklaracji?? Tak, chyba że chciałbyś używać poza klasą, to wtedy zmieniasz private na public ![]() Co do błędów: Po prostu w klasie zrób sobie miejsce gdzie będziesz trzymał tablicę z błędami, zrób metody do generowania (wpisywania do tablicy) i zwracania błędów (np. zwykły return poprzedniej tablicy, tylko już z przeparsowanym tekstem) -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 78 Pomógł: 9 Dołączył: 2.02.2011 Skąd: undefined Ostrzeżenie: (0%) ![]() ![]() |
Czy dobrze rozumiem. Metoda zwraca wynik bądź w razie błędu treść błędu generowaną przez inną metodę? Przy okazji wewnątrz obiektu trzymam zmienne/zmienną z nr błędu, pozycją i wartością?
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Tak byłoby chyba bardziej odpowiednio
![]() -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 78 Pomógł: 9 Dołączył: 2.02.2011 Skąd: undefined Ostrzeżenie: (0%) ![]() ![]() |
Więc, poprawiona wersja klasy
mexp.class.php Używanie jak poprzednio z tym że metoda mexp::result() zwraca wynik bądź treść błędu. Dodatkowo dodałem możliwość określenia dokładność z jaką ma być wyświetlony wynik. Standardowo $scale = 4. Poza tym dzięki za zainteresowanie:) Ten post edytował shinuexx 12.03.2012, 23:57:22 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.04.2025 - 05:50 |