Toon posts:

[Ruby] Classes

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo

Ik heb van Sinterklaas een Ruby on Rails boek gehad. Hier leer je het programeren in Ruby en Rails. In de eerste hoofdstukken leer je Ruby en daarna pas Rails. Ik ben nu bij het onderdeel "classes" aangekomen ik snap het niet echt.

Uit het boek moest ik deze class maken:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class klant
    
    def initialize(voornaam, familienaam)
        @voornaam = voornaam
        @familienaam = familienaam
    end
    
    def toonnaam
        "De klant heet #{@voornaam} #{@familienaam}"
    end
    
end

klant1 = Klant.new('Jaap , 'Schoen')

puts klant1.toonnaam
puts klant1.inspect
p klant1
puts klant1.to_s
gets


Nu probeer ik hem op te starten maar dat lukt niet. Ik hoorde ergens dat je een class weer aan iets anders moet koppelen etc. Wie ziet de fout of weet iets anders?

Alvast super bedankt!

Noob Scripter

Acties:
  • 0 Henk 'm!

  • simon
  • Registratie: Maart 2002
  • Laatst online: 26-09 15:31
wat lukt er niet bij 't opstarten? Syntax error?

Komt prolly hierdoor:

klant1 = Klant.new('Jaap , 'Schoen')


je mist een ' bij Jaap.

|>


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt, maar dat werkt ook niet. Als ik de promp opstart gaat hij zo weer weg :(. Waarschijnlijk is het gewoon een denkfout van mij maar welke :P.

Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

klant als klasnaam en daarna roep je Klant.new op? Ik weet niet hoe slim (lomp?) de ruby compiler is?

En als je in de plaats van de gets een while loop inbouwd die lang duurt, zie je dan iets?

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik doe het gewoon zo. Maak een script in me editior sla hem op in C/ruby/Scripts en dan opstarten. Als ik deze opstart blijft ie ongeveer 1 seconden en dan gaat ie weer weg zonder resultaat.

En die wile loop zou dat ook zo kunnen?

code:
1
2
3
10.times do
    gets
end


Alvast bedankt

Acties:
  • 0 Henk 'm!

  • simon
  • Registratie: Maart 2002
  • Laatst online: 26-09 15:31
Als je je terminal/cmd/whatever opstart doe je dus ruby scriptnaam.rb right? Dan is hij toch niet zomaar weg?

|>


Acties:
  • 0 Henk 'm!

  • Borizz
  • Registratie: Maart 2005
  • Laatst online: 24-09 20:59
Verwijderd schreef op zondag 07 december 2008 @ 17:04:
Ik doe het gewoon zo. Maak een script in me editior sla hem op in C/ruby/Scripts en dan opstarten. Als ik deze opstart blijft ie ongeveer 1 seconden en dan gaat ie weer weg zonder resultaat.
Ik krijg het vermoeden dat het allemaal wel werkt, maar nadat het script klaar is wordt simpelweg het command window ook gesloten, dit gaat waarschijnlijk zo snel dat je niet ziet wat er gebeurt.

Misschien moet je het eens vanaf de commandline proberen te starten.

If I can't fix it, it ain't broken.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
@Simon: als ik dat doe krijg ik "ruby: No such file or directory -- klanten_naam_class.rb <LoadError>"

Daarom ga ik naar de map waar ik mijn script heb opgeslagen en dan druk ik erop waardoor hij start....

@Borizz: Zou u/je me kunnen vertellen hoe ik dat doe :$?

Bedankt nogmaals!

Acties:
  • 0 Henk 'm!

  • Brian
  • Registratie: Oktober 2006
  • Laatst online: 05-08 14:09
Heb je nu al geprobeerd om Klant.new naar klant.new te veranderen (zonder hoofdletter)?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Een class begint toch altijd met een hoofdletter?

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Nu online

Creepy

Tactical Espionage Splatterer

Nee, jij definieert klant met een kleine letter ;)

Je boek zou moeten uitleggen hoe je dit soort zaakjes moet doen. Als het niet werkt dan heb je zeer waarschijnlijk het voorbeeld niet goed overgenomen of moeten er foutmeldingen voorbij komen die je met een beetje basiskennis van de taal moet kunnen oplossen. Die basiskennis wordt hopelijk in dat boek gegeven ;)

We gaan er hier vanuit dat je in eerste instantie zelf probeert om fouten e.d. zelf op te lossen en dat je ook aangeeft wat je allemaal hebt geprobeerd om dat te doen. Dat laat je nu totaal achterwege. Wil je hier op gaan letten?

[ Voor 24% gewijzigd door Creepy op 07-12-2008 17:44 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ok, sorry. Dit is hoofdstuk 2 van het boek. Eigenlijk hoofdstuk 1 in het echt programmeren in Ruby. Wat ik heb gedaan:

1. Code gemaakt en opgeslagen
2. Kijken op hij werkte.
3. Gegoogled over classes etc.
4. Ben hier toen terecht gekomen en een topic gemaakt.

Ik dacht net dat ik het had want een class maak je altijd (staat zelf in het boek) met een hoofdletter. Maar dat is het dus ook niet.

Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Dude, in regel 1 definieert gij de class met een _KLEINE_ letter!!! Fix dat eens!

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • MrBucket
  • Registratie: Juli 2003
  • Laatst online: 29-10-2022
Verwijderd schreef op zondag 07 december 2008 @ 17:22:
@Simon: als ik dat doe krijg ik "ruby: No such file or directory -- klanten_naam_class.rb <LoadError>"

Daarom ga ik naar de map waar ik mijn script heb opgeslagen en dan druk ik erop waardoor hij start....
Zoals iemand anders al aangaf, waarschijnlijk houdt Ruby het commandline venster niet open nadat hij een fout in je programma is tegengekomen. Probeer het eens vanuit een commandline venster:
1) Klik op Start, Uitvoeren, typ in "cmd", enter. Je krijgt nu een zwart scherm met een prompt ("C:\...>")
2) Stel dat je Ruby-script in "D:\Sourcecode\Ruby\" staat, typ in (zonder de ") :
"D:" <enter>
"cd \" <enter>
"cd SourceCode\Ruby" <enter>
3) Je bent nu in "D:\Sourcecode\Ruby\" (of waar je script dan ook staat, pas bovenstaande natuurlijk aan je eigen situatie aan!), om je programma te starten typ je:
"ruby klanten_naam_class.rb" <enter>

Als het goed is herkent de commandprompt het programma "ruby", en zal het je script proberen uit te voeren. Evt. foutmeldingen blijven nu wel zichtbaar.
Verwijderd schreef op zondag 07 december 2008 @ 17:39:
Een class begint toch altijd met een hoofdletter?
In veel programmeertalen is het een goed gebruik om je classes een naam te geven die begint met een hoofdletter, maar het hoeft niet - Ruby dwingt het niet af. Het enige wat voor Ruby telt, is dat je de naam consequent hetzelfde schrijft (incl. hoofdlettergebruik), anders denkt 'ie dat het om twee verschillende dingen gaat.
Dus als jij ervoor kiest om je classnaam met een kleine letter te laten beginnen, dan is dat prima, maar dan verwacht Ruby ook dat je op alle andere plekken het met een kleine letter schrijft.

Acties:
  • 0 Henk 'm!

  • prototype
  • Registratie: Juni 2001
  • Niet online

prototype

Cheer Bear

Typisch geval van case sensitivity. Het is al vaker gezegd, maar 'k zal wel even spuit 11 zijn ;-) Verander "class klant" naar "class Klant" en fix de quotjes bij de constructor and you should be done. Beter dat je misschien trouwens dit online boek raadpleegt voor Ruby leren :-)

Als je nog Rails deployment software zoekt voor apache, kijk dan even op http://modrails.com [/schaamteloze reclame]

[ Voor 3% gewijzigd door prototype op 07-12-2008 23:44 ]

Pagina: 1