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  [ 3 Beiträge ] 
Autor Nachricht
BeitragVerfasst: 01 Mär 2017, 12:59 
Offline
Lehrling
Benutzeravatar

Registriert: 21 Sep 2016, 19:20
Beiträge: 57
Wie kann ich die Methode von einer anderen Klasse in einer anderen Klasse in einer Methode ausführen? Also das hier

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Kuh
def muhh
print "ichbineinekuhundichmachemuh"
end
end
@kuh = Kuh.new

class Muh
def muhmachen
@kuh.muhh
end
end
muh = Muh.new

muh.muhmachen()

Hier gibt er nicht "ichbineinekuhundichmachmuh" aus sondern das hier:

ichbineinekuh.rb:10:in `muhmachen': undefined method `muh' for nil:NilClass (NoMethodError)
from ichbineinekuh.rb:15:in `<main>'


Was soll ich tuen?


Nach oben
 Profil  
 
BeitragVerfasst: 01 Mär 2017, 17:52 
Offline
Metaprogrammierer

Registriert: 20 Nov 2011, 21:51
Beiträge: 693
Weil in der Klasse Muh die Instanzvariable @kuh nicht gesetzt ist. Die von dir irgendwo mit einem Wert belastete @kuh liegt nicht im "Scope" oder "Sichtbarkeitsbereich" der Methode Muh.muhmachen.

Die sauberste variante wäre es wohl Kuh erst in Muh zu instanzieeren:



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Kuh
def muhh
print "ichbineinekuhundichmachemuh"
end
end

class Muh
def muhmachen
@kuh ||= Kuh.new
@kuh.muhh
end
end
muh = Muh.new

muh.muhmachen()

_________________
Ubuntu Gnome 14.04 LTS
rvm mit App-spezifischer Ruby-Version (meist 2.2.x) und -Gemset

Github ProfilBitbucket Profil


Nach oben
 Profil  
 
BeitragVerfasst: 01 Mär 2017, 22:45 
Offline
Lehrling
Benutzeravatar

Registriert: 21 Sep 2016, 19:20
Beiträge: 57
oooh stimmt
tja darauf hätt ich auch mal wieder selbst drauf kommen können :roll:


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 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: