ACHTUNG. Das ist ein Archiv des alten forum.ruby-portal.de. Die aktuelle Mailingliste gibt es auf lists.ruby-lang.org/pipermail/ruby-de.

NOTICE. This is a ready-only copy of the old forum.ruby-portal.de. You can find the current mailing list at lists.ruby-lang.org/pipermail/ruby-de.

Die Programmiersprache Ruby

Blog|

Forum|

Wiki  


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]

Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Array push Ersatz.
BeitragVerfasst: 15 Okt 2004, 12:26 
Offline
Meister

Registriert: 25 Jun 2002, 20:39
Beiträge: 276
Wohnort: Hamburg
:) zum spass , nicht wirklich sinnvoll. Interessant ist vielleicht der Einsatz von alias method, die Parameterübergabe und das Überschreiben von Methoden.

Vielleicht kann ja jemand noch etwas lernen.

Gruß, leobm



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

class Array
alias_method :set, :[]=
def []=(*params)
if params[1]==nil
self.push(params[0])
else
self.set(params[0],params[1])
end
end
end

x = Array.new

x[]=5
x[]='ffsfs'
x[]=[1,2,3]
puts x.inspect



andere Möglichkeit für alias_method:


1
2
3
4
5
6
7

class Foo
old = instance_method(:blah);
define_method(:blah){ |a,b|
puts a + b; old.bind(self).call(a,b)
}
end


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Array push Ersatz.
BeitragVerfasst: 15 Okt 2004, 14:11 
Offline
Böser Admin 2
Benutzeravatar

Registriert: 17 Mär 2004, 17:03
Beiträge: 2544
Wohnort: Berlin
interessanter code!

ich hab ein wenig damit experimentiert und folgendes gefunden:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Array
alias_method :set, :[]=
def []= *params
set *params
self
end
def << param
push param
self
end
end

x = []
p x << 4 #-> [4, 4]
p x[0] = 4 #-> 4 WARUM??
sieht mir nach einem bug aus. oder ist das gewollt?

_________________
Ruby-Mine | (almost) murphy.de | rubychan.de


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
cron