Ruby: Nå en instansvariabel utanför en metod.

Permalänk
Medlem

Ruby: Nå en instansvariabel utanför en metod.

Hejsan.
Jag har ett grymt simpelt problem.
Jag har en instansvariabel som heter @counter

Den är satt till "5" till att börja med.

Jag har en metod som sköter en registrering av en kund, i slutet av metoden så har jag

@counter.to_i+1 för att plussa på så att @counter blir 6 istället.

Men den visar bara "nil" när jag försöker hämta värdet ur den @countern innanför metoden.
@counter ligger alltså utanför metoden jag pratar om.

Och jag kan ju inte ha @counter = "5" innanför metoden, för då förblir ju @counter = "5" hela tiden eftersom metoden körs om vid varje registrering.

Tackar för hjälp

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

Du måste se till att uttryckets värde sparas också, som det är nu kastar du resultatet.

Ändra till @counter += 1, eller @counter = @counter.to_i + 1

Permalänk
Medlem

Tack för svaret. Jag hade faktiskt lagt upp det så, dock vet jag inte varför jag ändrade tillbaka.

Hur som helst så återstår fortfarande mitt problem.
Längst upp i mainclassen så har jag lagt in

@counter = "5"

Längre ner i en metod så vill jag ju kunna hämta värdet ur @counter.

Då skrev jag simpelt "puts @counter" och precis under detta skrev jag, "@counter = counter.to_i + 1" som du skrev.
Men "puts @counter" skriver bara ut "nil" för att den verkar inte nå instansvariabeln i toppen av programmet.
Jag provade att mixxa med attr_accessor om det nu skulle hjälpa men det gjorde det inte.

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 svaret. Jag hade faktiskt lagt upp det så, dock vet jag inte varför jag ändrade tillbaka.

Hur som helst så återstår fortfarande mitt problem.
Längst upp i mainclassen så har jag lagt in

@counter = "5"

Längre ner i en metod så vill jag ju kunna hämta värdet ur @counter.

Då skrev jag simpelt "puts @counter" och precis under detta skrev jag, "@counter = counter.to_i + 1" som du skrev.
Men "puts @counter" skriver bara ut "nil" för att den verkar inte nå instansvariabeln i toppen av programmet.
Jag provade att mixxa med attr_accessor om det nu skulle hjälpa men det gjorde det inte.

Kan man få se lite kod, tro?

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

Jag tror jag löste det. Kom på att dem ej låg i samma class.
Men nu är mitt problem att sortera upp allt slarv jag har med allla "ends" som ligger heeeelt fel.
Någon sida som kan räkna ut hur många ends det bör vara?

Edit:

Jag kom på att jag inte ens indenterat koden. Dags att ha lite kul

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