RUBY: Jag kan inte anropa metoden. Hjälp

Permalänk
Medlem

RUBY: Jag kan inte anropa metoden. Hjälp

Hejsan alla!
Först och främst.
Jag pastar koden på pastebin istället, så det inte blir 2 miljarder sidor i forumet.
Blir jobbigt för er alla att scrolla osv då.

Här är koden
Ruby pastebin - collaborative debugging tool

På raderna 33 och 34 så anropar jag en metod som heter inCheckning

Metoden inCheckning kan ni hitta på rad 126 till 147.

Som ni ser så är inCheckning i en annan class än där jag anropar metoden.

Varför låter den inte mig anropa metoden?

Felmeddelandet jag får är följande

kund_data.rb:33:in `menyVal': uninitialized constant KundData::Kund (NameError)

Mitt tidigare problem löste sig halft.
Visa signatur

Samsung TFT 22" 2233RZ Svart 120HZ - 640GB Western Digital Black 64MB SATA III - Corsair 4GB (2x2048MB) 1333MHz XMS3-10600 - AMD Phenom2 X4 965 3,4GHz Black Edition - Gigabyte GeForce GTX 460 1GB OC - Fractal Design Define R3, Svart - Corsair TX 650W 80+ - Gigabyte GA-870A-UD3 - Cooler Master Hyper 212 Plus

Permalänk
Medlem

Felpost. Jag ber om ursäkt, tänkte posta i "visa din hemsida" tråden. Vet ej hur den hamnade här

Felpost. Jag ber om ursäkt, tänkte posta i "visa din hemsida" tråden. Vet ej hur den hamnade här
Permalänk
Medlem

Till att börja med vill du nog flytta initieringen av KundData utanför klassen KundData (t.ex. sist i filen), dvs

#Hämta menyn meny = KundData.new meny.menyVal

flyttar du längst ner.

Nästa steg (eftersom det blir ett annat fel här) är att du behöver fixa antingen en konstruktor som inte tar några inparametrar, eller skicka med de 5 parametrar som du specat för nuvarande konstruktor för klassen Kund, och sedan fixa nästa fel som blir osv osv

Eller, egentligen vill jag nog be dig tänka igenom hur du egentligen vill ha det hela och börja om från scratch.

Visa signatur

The power of GNU compiles you!
"Often statistics are used as a drunken man uses lampposts -- for support rather than illumination."

Permalänk
Medlem

Saken är den att jag har haft koden fungerande, perfekt. Det är när jag börja med att fixa alla "end"s som låg spritt på tok för fel som det börja ge error.

Hur ser du på felet med

kundIn = Kund.new kundIn.inCheckning

?

Hur ska jag göra, för att kunna köra en metod som ligger i en annan klass, från en metod som ligger i en annan klass?

Visa signatur

Samsung TFT 22" 2233RZ Svart 120HZ - 640GB Western Digital Black 64MB SATA III - Corsair 4GB (2x2048MB) 1333MHz XMS3-10600 - AMD Phenom2 X4 965 3,4GHz Black Edition - Gigabyte GeForce GTX 460 1GB OC - Fractal Design Define R3, Svart - Corsair TX 650W 80+ - Gigabyte GA-870A-UD3 - Cooler Master Hyper 212 Plus

Permalänk
Medlem

Är det inte bättre att du skapar EN tråd som typ heter "sAndens Rubyproblem" istället för att dagligen spawna en ny tråd varenda gång du stöter på ett problem?

Permalänk
Medlem

Jo jag tror det. Jag glömde att man kunde ändra topic
Jag har fixat mitt problem nu. Tack så hemskt mycket Kode!!

Visa signatur

Samsung TFT 22" 2233RZ Svart 120HZ - 640GB Western Digital Black 64MB SATA III - Corsair 4GB (2x2048MB) 1333MHz XMS3-10600 - AMD Phenom2 X4 965 3,4GHz Black Edition - Gigabyte GeForce GTX 460 1GB OC - Fractal Design Define R3, Svart - Corsair TX 650W 80+ - Gigabyte GA-870A-UD3 - Cooler Master Hyper 212 Plus

Permalänk
Medlem
Skrivet av sAnden:

Saken är den att jag har haft koden fungerande, perfekt. Det är när jag börja med att fixa alla "end"s som låg spritt på tok för fel som det börja ge error.

Använd en editor som kan autoindentera din kod. När det är gjort kollar du efter kod med fel indenteringsnivå, som exempelvis klassmetoder utan indentering, metoder med ett extra indenteringssteg, eller loopar och annat indenterade till samma nivå som metoden de egentligen ska ligga i. Då borde du kunna se var du tagit bort eller lagt till för många "end".

Visa signatur

Vill du ha svar? Citera mig gärna.

Permalänk
Medlem
Skrivet av lajnold:

Använd en editor som kan autoindentera din kod. När det är gjort kollar du efter kod med fel indenteringsnivå, som exempelvis klassmetoder utan indentering, metoder med ett extra indenteringssteg, eller loopar och annat indenterade till samma nivå som metoden de egentligen ska ligga i. Då borde du kunna se var du tagit bort eller lagt till för många "end".

Tack för hjälpen! Jag ska tanka den.
Dock lyckades jag själv fixa problemet, men allt detta startades med att jag ville nå en instansvariabel i en metod (instansvariabeln låg utanför metoden och enligt min kod; även i samma class.
Men när jag skriver puts @counter så visar den nil hela tiden.

För att förtydliga det hela.

Min kod så ut som f*n innan.
Då fick jag indentera, lägga om classerna och allting.
Detta orsakade mitt stora problem, som nu är löst.

Men jag kan fortfarande inte nå en instansvariabel som är utanför en metod, inte ens om den är med i samma klass.
Här är jag helt blank.

Visa signatur

Samsung TFT 22" 2233RZ Svart 120HZ - 640GB Western Digital Black 64MB SATA III - Corsair 4GB (2x2048MB) 1333MHz XMS3-10600 - AMD Phenom2 X4 965 3,4GHz Black Edition - Gigabyte GeForce GTX 460 1GB OC - Fractal Design Define R3, Svart - Corsair TX 650W 80+ - Gigabyte GA-870A-UD3 - Cooler Master Hyper 212 Plus

Permalänk
Medlem
Skrivet av sAnden:

Tack för hjälpen! Jag ska tanka den.
Dock lyckades jag själv fixa problemet, men allt detta startades med att jag ville nå en instansvariabel i en metod (instansvariabeln låg utanför metoden och enligt min kod; även i samma class.
Men när jag skriver puts @counter så visar den nil hela tiden.

Det kan ju eventuellt ha att göra med att du instansierar nya objekt hela tiden istället för att återanvända gamla.

Visa signatur

The power of GNU compiles you!
"Often statistics are used as a drunken man uses lampposts -- for support rather than illumination."

Permalänk
Medlem

Hur återanvänder jag gamla objekt?
Det har jag aldrig vetat att man kan göra

Visa signatur

Samsung TFT 22" 2233RZ Svart 120HZ - 640GB Western Digital Black 64MB SATA III - Corsair 4GB (2x2048MB) 1333MHz XMS3-10600 - AMD Phenom2 X4 965 3,4GHz Black Edition - Gigabyte GeForce GTX 460 1GB OC - Fractal Design Define R3, Svart - Corsair TX 650W 80+ - Gigabyte GA-870A-UD3 - Cooler Master Hyper 212 Plus

Permalänk
Medlem

tja, t.ex. istället för att göra kunddata = KundData.new så använder du kunddata igen, bara...

(KundData låter för övrigt som en lämplig klass att göra singleton av)

Visa signatur

The power of GNU compiles you!
"Often statistics are used as a drunken man uses lampposts -- for support rather than illumination."