Ruby. Pradžia
Vidmantas Kabošis @ VilniusRB, 2013-11-30
Pradžių pradžia
1995
Pradžių pradžia
1995© Kada, jei ne dabar
Visur
Visur - ir Lietuvoje
Žmogui: productivity & fun
“vilniusrb”.length
Žmogui: productivity & fun
“vilniusrb”.length[ 1, 2, 3 ].include?(2)
Žmogui: productivity & fun
“vilniusrb”.length[ 1, 2, 3 ].include?(2)print “YOLO” if 1 > 2
Žmogui: productivity & fun
“vilniusrb”.length[ 1, 2, 3 ].include?(2)print “YOLO” if 1 > 2
10.times do puts “99 bottles…”end
Katės
Objektai
Pradžioje visko, buvo
objektas
Objektų sukūrimas
Tam, kad pagamintume ką nors, reikia
instrukcijos
Klasės
Tam, kad pagamintume ką nors, reikia
klasės
Klasė
Objektai
Klasės aprašymas
class Pavadinimas # metodaiend
Klasės aprašymas
class House def number_of_floors
puts “2” endend
Objekto sukūrimas
home = House.newhome.number_of_floors
Objekto sukūrimas
home = House.newhome.number_of_floors
#=> “2”
Standartiniai objektai
42 # Integer3.14 # Float“VilniusRB” # String[1, 2, 3] # Array{ “pi” => 3.14, “e” => 2.71 } # Hash
Standartiniai objektai
[“langai”, “durys”, “sienos”].size
#=> 3
[“langai”, “durys”, “sienos”].include?(“balkonas”)
#=> false
4 * 2 #=> 8
Vykdymo tvarka
if condition # kodaselse # kitas kodasend
Sąlyga
NEVYKDOMA, jei sąlyga grąžina: false nil
Sąlyga
NEVYKDOMA, jei sąlyga grąžina: false nilVYKDOMA:visa kita :-)
true, tekstas, skaičius, sąrašas, ...
Pavyzdys
class Recipe
def contains?(ingredient)
if [“miltai”, “cukrus”].include?(ingredient)
puts “Šis ingredientas yra!”
else
puts “Teks nusipirkti”
end
end
end
r = Recipe.new
r.contains?(“razinkos”) #=> “Teks nusipirkti”
Sukūrimo metodas
class Recipe
def initialize(ingredients)
@ingredients = ingredients
end
end
r = Recipe.new([“miltai”, “razinkos”])
Objekto kintamasis
class Recipe
def initialize(ingredients)
@ingredients = ingredients
end
def contains?(ingredient)
if @ingredients.include?(ingredient)
puts “YAY!”
end
end
end
Objekto kintamasis
r = Recipe.new([“miltai”, “razinkos”])
r.contains?(“razinkos”)
#=> “YAY!”
r = Recipe.new([“cukrus”, “bananai”])
r.contains?(“razinkos”)
#=> nil
Užduotis
Parašyti klasę, kurios objektas mokėtų sukūrimo metu atsiminti perduotą sąrašą ir pasakyti, ar konkreti dalis yra tame sąraše.
Pavyzdžiui:home = House.new([“sienos”, “laiptai”])home.has?(“langai”) #=> “Ne”home.has?(“sienos”) #=> “Taip”
Papildoma užduotis pirmūnams :-)
Papildykite klasę nauju metodu, kuris pagal perduotą aukštų skaičių, grąžiną pastato aukštį (sakykim, kad vienas aukštas = 3.1 m)
Pavyzdžiui:home.height(2) #=> 6.2home.height(5) #=> 15.5
gem
Ruby klasėsSavo klasėsKitų klasės: gem
Panaudojimas
$ gem install credit_card_validator
Panaudojimas
require “credit_card_validator”
number = '1111 2222 3333 4444'CreditCardValidator::Validator.valid?(number)#=> false
end