Original geschrieben von wahsaga
Grundsätzlich will ich mich in die Diskussion eigentlich gar nicht einmischen, aber ...
Sehe ich das richtig, dass hier eine Methode upto eines Zahlenobjekts(?) 0 mit dem Parameter 10 aufgerufen wird, um von 0 bis 9 zu laufen ...?
Grundsätzlich will ich mich in die Diskussion eigentlich gar nicht einmischen, aber ...
Sehe ich das richtig, dass hier eine Methode upto eines Zahlenobjekts(?) 0 mit dem Parameter 10 aufgerufen wird, um von 0 bis 9 zu laufen ...?
eine designentscheidung von ruby war, dass alles ein objekt ist.
Wirklich alles. Sogar Klassen selbst sind objekte. (genau genommen
gibt es bei klassen eine kleine abweichung von der regel, die
hier aber nicht weiter von belang ist)
Das mag etwas esoterisch klingen wenn man diese sichtweise
nicht gewohnt ist eröffnet aber einige möglichkeiten, die nur
in ruby möglich sind, weil es durchweg so designed wurde.
Selbst literale sind objekte.
Code:
"ich bin ein string".length [1,2,3,4].select { |i| i == 3 } 3.times do sth end
Original geschrieben von wahsaga
Was mich daran wirklich stört ist, dass der "Startwert" ein Objekt darstellt, der Endwert wiederum nur ein Parameter ist - sorry, aber diese Notation ist wirklich hässlich und intransparent in meinen Augen.
Was mich daran wirklich stört ist, dass der "Startwert" ein Objekt darstellt, der Endwert wiederum nur ein Parameter ist - sorry, aber diese Notation ist wirklich hässlich und intransparent in meinen Augen.
eine instanz von Fixnum.
Original geschrieben von wahsaga
Das ist ja in etwa das gleiche, als wenn ich zum Vergleichen von zwei Zahlen keinen schlichten Operator mehr nehmen würde - sondern dazu eine Vergleichsmethode eines Zahlenobjektes nehme, und der die andere Zahl als Parameter übergebe ...
7.isEqualTo(13)
Das ist ja in etwa das gleiche, als wenn ich zum Vergleichen von zwei Zahlen keinen schlichten Operator mehr nehmen würde - sondern dazu eine Vergleichsmethode eines Zahlenobjektes nehme, und der die andere Zahl als Parameter übergebe ...
7.isEqualTo(13)
ist es. Die methode heisst eben nur nicht "isEqualTo" sondern "==".
Und
Code:
5 == 3
Code:
5.==(3)
Original geschrieben von wahsaga
Das klingt für mich eher nach Objektorientierung um der Objektorientierung willen, auf Teufel komm' raus, und nicht weil sie an der Stelle etwa sinnvoll wäre.
Das klingt für mich eher nach Objektorientierung um der Objektorientierung willen, auf Teufel komm' raus, und nicht weil sie an der Stelle etwa sinnvoll wäre.
Das halte ich an dieser stelle nicht für falsch. Weil es wie beschrieben erhebliche vorteile bring.
Smalltalk und python etwa gingen und gehen den selben weg.
greets
Kommentar