Thread View: pl.comp.lang.ruby
6 messages
6 total messages
Started by Jaroslaw Zabiello
Wed, 26 Jul 2006 10:02
Kaskadowe porównania
Author: Jaroslaw Zabiello
Date: Wed, 26 Jul 2006 10:02
Date: Wed, 26 Jul 2006 10:02
14 lines
1111 bytes
1111 bytes
Da się jakoś zmusić Rubiego aby porównywał kaskadowo zmienne? Chodzi mi o możliwość napisania if x == y == z .... W Pythonie to działa bardzo ładnie i nawet więcej, bo można uzyskać bardzo elgancki zapis w stylu matematycznym.Np. zamiast if x > 1 and x <= 10: print 'ok' można napisać if 1 < x <= 10: print 'ok' -- Jarosław Zabiełło http://blog.zabiello.com
Re: Kaskadowe porównania
Author: Marcin Mielżyński
Date: Wed, 26 Jul 2006 11:00
Date: Wed, 26 Jul 2006 11:00
18 lines
1488 bytes
1488 bytes
Jaroslaw Zabiello wrote: > Da się jakoś zmusić Rubiego aby porównywał kaskadowo zmienne? Chodzi mi o > możliwość napisania if x == y == z .... W Pythonie to działa bardzo ładnie > i nawet więcej, bo można uzyskać bardzo elgancki zapis w stylu > matematycznym.Np. zamiast > > if x > 1 and x <= 10: print 'ok' > > można napisać > > if 1 < x <= 10: print 'ok' > Nie da się, to jest kwestia składni - spójrz na to ze smalltalkowej strony - rozbierz to na komunikaty i zastanów się czy to ma sens ;) Tutaj spójność języka górą. lopex
Re: Kaskadowe porównania
Author: Jaroslaw Zabiello
Date: Wed, 26 Jul 2006 11:25
Date: Wed, 26 Jul 2006 11:25
25 lines
1858 bytes
1858 bytes
On Wed, 26 Jul 2006 13:00:18 +0200, Marcin Mielżyński wrote: >> if 1 < x <= 10 > > Nie da się, to jest kwestia składni - spójrz na to ze smalltalkowej > strony - rozbierz to na komunikaty i zastanów się czy to ma sens ;) > Tutaj spójność języka górą. Spójność spójnością, a Ruby ma też alternatywną składnię do petli za pomocą słowa "in". Po co skoro to nie do końca jest zgodne z filozogią smalltalkowych komunikatów? Na dodatek Matzowi chyba zabrakło konsekwencji, bo skoro dodał "in" do tworzenia pętli to mógłby dodać też do warunków (np. if x in y jako alternatywa dla y.include?(x)). Ruby jest bardzo ładnym językiem ale mam wrażenie, że parę rzeczy dodano trochę bez pomyślunku. Np. duplikacja metod za pomocą aliasów. Nie przekonuje mnie filozofia: jak nie pamiętasz jaką metodę to spróbuj inna nazwę, pewnie zadziała. Lepiej mieć mniej metod unikalnych niż całe mnóstwo z czego część to tylko aliasy. -- Jarosław Zabiełło http://blog.zabiello.com
Re: Kaskadowe porównania
Author: Marcin Mielżyński
Date: Wed, 26 Jul 2006 11:35
Date: Wed, 26 Jul 2006 11:35
32 lines
2209 bytes
2209 bytes
Jaroslaw Zabiello wrote: > Spójność spójnością, a Ruby ma też alternatywną składnię do petli za pomocą > słowa "in". Po co skoro to nie do końca jest zgodne z filozogią > smalltalkowych komunikatów? > for .. in to jest syntactic sugar dla .each faktycznie, z tej strony patrząc nie widzę przeszkód przed dodaniem nowej składni dla kaskadowych porównań > Na dodatek Matzowi chyba zabrakło konsekwencji, bo skoro dodał "in" do > tworzenia pętli to mógłby dodać też do warunków (np. if x in y jako > alternatywa dla y.include?(x)). > jeśli tak, to przykłady można mnożyć, z drugiej strony jednak wogóle wywaliłbym for .. in z Rubiego i nie zastanawiał się nad in > Ruby jest bardzo ładnym językiem ale mam wrażenie, że parę rzeczy dodano > trochę bez pomyślunku. Np. duplikacja metod za pomocą aliasów. Nie > przekonuje mnie filozofia: jak nie pamiętasz jaką metodę to spróbuj inna > nazwę, pewnie zadziała. Lepiej mieć mniej metod unikalnych niż całe mnóstwo > z czego część to tylko aliasy. > kwestia gustu i przyzwyczajenia, sam często zamiennie używam np: length i size - po prostu czasem lepiej czyta się tak lub tak w zależności od sytuacji. lopex
Re: Kaskadowe porównania
Author: Aleksander Janeczko
Date: Wed, 26 Jul 2006 17:27
Date: Wed, 26 Jul 2006 17:27
14 lines
1463 bytes
1463 bytes
Marcin Mielżyński wrote: > Jaroslaw Zabiello wrote: > > if 1 < x <= 10: print 'ok' > > > > Nie da się, to jest kwestia składni - spójrz na to ze smalltalkowej > strony - rozbierz to na komunikaty i zastanów się czy to ma sens ;) No - gdyby wzbogacić klasę TrueClass o właściwość przechowującą liczbowy element nierówności z której ewaluowała (tu 1), a potem o metodę porówującą tę właściwość z argumentem następującej nierówności (tu 10)... To by się dało. ;) Jakieś pomysły jak? :)
Re: Kaskadowe porównania
Author: Aleksander Janeczko
Date: Wed, 26 Jul 2006 20:56
Date: Wed, 26 Jul 2006 20:56
5 lines
1212 bytes
1212 bytes
> gdyby wzbogacić klasę TrueClass o właściwość przechowującą > liczbowy element nierówności z której ewaluowała (tu 1) Tfu, oczywiście chodziło mi o zawarcie w instancji prawdy i wykorzystanie w następnym porównaniu niewiadomej x.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads