Ruby Tutorial - Part 2

Ruby, Ruby on Rails, Sinatra, ...

Συντονιστές: WebDev Moderators, Super-Moderators, Ruby Moderators

Απάντηση
Άβαταρ μέλους
stewas
Script Master
Δημοσιεύσεις: 436
Εγγραφή: 25 Αύγ 2009 13:48
Τοποθεσία: Πάργα - Αθήνα και Ιωάννινα Πλέον
Επικοινωνία:

Ruby Tutorial - Part 2

Δημοσίευση από stewas » 06 Αύγ 2010 14:34

(Συνέχεια του προηγούμενου http://www.freestuff.gr/forums/viewtopic.php?t=51292)

εφόσον χρησιμοποιούμε πολλές φορές μια σειρά εντολών γιατι να μην γράψουμε μία μέθοδο μόνο μία φορά και να την καλούμε όσες φορές θελουμέ? αυτό θα μας εξικονομήσει και χρόνο και χώρο(λιγότερες γραμμές κώδικα)

ας δούμε πως υλοποιούμε μία μέθοδο

γράψτε

Κώδικας: Επιλογή όλων

irb(main):010:0> def h
irb(main):011:1> puts "Hello World!"
irb(main):012:1> end
=> nil
φτιάξαμε την μέθοδο με όνομα h που εκτυπώνει το μήνυμα Hello World!

οκ ως εδώ. Πως την καλούμε?

Κώδικας: Επιλογή όλων

irb(main):013:0> h
Hello World!
=> nil
irb(main):014:0> h()
Hello World!
=> nil
είτε με σκέτο το όνομα της είτε με το όνομα της ακολουθούμενο από παρενθέσεις(σωστότερος τρόπος)

αμα όμως θέλουμε η συναρτησή μας(δηλ η μέθοδος) να κάνει καποιόν υπολογισμό δηλαδή γενικά να παίρνει κάτι ως είσοδο και να βγάζει έξοδο πρέπει να της δώσουμε και όρισμα.

ας δούμε πρώτα πως γράφουμε μία μέθοδο που θα παίρνει όρισμα

Κώδικας: Επιλογή όλων

irb(main):015:0> def h(name)
irb(main):016:1> puts "Hello #{name}!"
irb(main):017:1> end
=> nil
Ωραία και καλείται έτσι :

Κώδικας: Επιλογή όλων

irb(main):018:0> h("Matz")
Hello Matz!
=> nil
οκ τώρα γράψτε τα ακόλουθα :

Κώδικας: Επιλογή όλων

irb(main):019:0> def h(name = "World")
irb(main):020:1> puts "Hello #{name.capitalize}!"
irb(main):021:1> end
=> nil
irb(main):022:0> h "chris"
Hello Chris!
=> nil
irb(main):023:0> h
Hello World!
=> nil
εδώ βλέπουμε 2 πράγματα. Πρώτον με την capitalize μπορούμε να κάνουμε το πρώτο γράμμα κεφαλαίο. Υπάρχουν πολλές τέτοιες συναρτήσεις χειρισμού γραμματοσειρών. Θα τις δουμε σε αργότερο οδηγό. Δεύτερον άμα δεν δώσουμε όρισμα παίρνει το default όρισμα που δώσαμε όταν δημιουργήσαμε την μέθοδο.

Η Ruby μας δίνει επίσης την δυνατότητα να φτιάξουμε πολλές μεθόδους μαζί και να τις ομαδοποιήσουμε σε ένα "καλούπι" ας πούμε που ονομάζεται κλάση (class)

Αυτό γίνεται ως εξής

Κώδικας: Επιλογή όλων

irb(main):024:0> class Greeter
irb(main):025:1>   def initialize(name = "World")
irb(main):026:2>     @name = name
irb(main):027:2>   end
irb(main):028:1>   def say_hi
irb(main):029:2>     puts "Hi #{@name}!"
irb(main):030:2>   end
irb(main):031:1>   def say_bye
irb(main):032:2>     puts "Bye #{@name}, come back soon."
irb(main):033:2>   end
irb(main):034:1> end
=> nil
η @name είναι μία μορφή public μεταβλήτης που έχει ισχύ σε όλη την class

οκ φτίαξαμε το "καλούπι" μας

πρέπει μεσά να βάλουμε κάτι (ας το πουμε αυτό Χ) και να μας βγάλει κάτι (αυτό ας το πουμε Υ).

το Χ ειναι ορίσματα και το Υ είναι μία έξοδος ας πουμε που έχει συγκεκριμένες ιδιότητες και στις αντικειμενοστραφείς γλώσσες ονομάζεται αντίκειμενο

Υλοποιείται έτσι :

Κώδικας: Επιλογή όλων

irb(main):035:0> g = Greeter.new("Pat")
=> #<Greeter&#58;0x16cac @name="Pat">
όπου Υ = g , X="Pat"

το αντικείμενο φτιάχτηκε

ας το "δουλέψουμε" λίγο :

Κώδικας: Επιλογή όλων

irb&#40;main&#41;&#58;036&#58;0> g.say_hi
Hi Pat!
=> nil
irb&#40;main&#41;&#58;037&#58;0> g.say_bye
Bye Pat, come back soon.
=> nil
Προσοχή. Δεν έχουμε δικαίωμα να αλλάξουμε πλέον τιμή στο αντικείμενο που φτιάξαμε. Δηλ η τιμή "Pat" που δώσαμε στο αντικείμενο g δεν αλλάζει πλέον. Αν θέλουμε άλλη τιμή πρέπει να φτιάξουμε ένα νέο αντικείμενο

Αυτά προς το παρόν...Σύντομα και τα υπόλοιπα

Άβαταρ μέλους
mrpc
WebDev Moderator
Δημοσιεύσεις: 3393
Εγγραφή: 03 Μάιος 2000 03:00
Τοποθεσία: Εξάρχεια
Επικοινωνία:

Ruby Tutorial - Part 2

Δημοσίευση από mrpc » 06 Αύγ 2010 15:03

Well done!
Λέω να πειραματιστώ λίγο μετά τις διακοπές :)

cocoflop
Δημοσιεύσεις: 46
Εγγραφή: 23 Αύγ 2007 19:51

Ruby Tutorial - Part 2

Δημοσίευση από cocoflop » 07 Αύγ 2010 00:08

Πολύ καλή ιδέα, σκέπτομαι εδώ και πολύ καιρό να ασχοληθώ με ruby, επειδή είναι πολύ λιτή και μινιμαλιστική γλώσσα, είναι πολύ ευχάριστη και δεν σε ζαλίζει με βαρβατο αυστηρό συντακτικό.

Ορίστε και η δική μου η πατέντα.

Κώδικας: Επιλογή όλων

puts "What is your name?"
name = gets
puts "Hello, " + name

puts "What year were you born?"
birthΥear = Integer&#40;gets&#41;
age = 2010 - birthΥear
puts "So you are " + age.to_s + " years old! "

gets

Απάντηση

Επιστροφή στο “Ruby & frameworks”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες