• kontenery i enumeratory • getter i setter • otwarte klasy i operacje na czasie • dziedziczenie i moduły • dynamiczne tworzenie metod • bloki, lambdy i proc’ki.
God", "Was it a cat I saw", "orkom mokro", "ruby on rails" ] Zadanie 2 Output: [ "mów dała dwóm, "sedes", "Do geese see God", "Was it a cat I saw", "orkom mokro" ]
God", "Was it a cat I saw", "orkom mokro", "ruby on rails" ] Zadanie 2 Output: [ "mów dała dwóm, "sedes", "Do geese see God", "Was it a cat I saw", "orkom mokro" ] Solution: input.select do |el| compressed = el.downcase.gsub(" ", "") compressed.reverse == compressed end
do |value| instance_variable_set("@#{attribute_name}", value) end define_method "#{attribute_name}" do instance_variable_get("@#{attribute_name}") end end end Zadanie – rozwiązanie 2
do |value| instance_variable_set("@#{attribute_name}", value) end define_method "#{attribute_name}" do instance_variable_get("@#{attribute_name}") end end end Zadanie – rozwiązanie 2
klasy, dziedziczymy po klasie Object • dziedziczyć możemy po klasach wbudowanych class Message < String end message = Message.new("Hello World!") puts message #=> "Hello World!"
je wykorzystywać w wielu klasach • istnieją moduły wbudowane w język class Player include Comparable attr_reader :score def initialize(value) @score = value end def <=>(player) score <=> player.score end end player1 = Player.new(10) player2 = Player.new(20) puts player1 < player2 #=> true
obj.score end def <(obj) score < obj.score end def >(obj) score > obj.score end end class Player include ComparableScores attr_reader :score def initialize(value) @score = value end end class Cheater include ComparableScores attr_reader :score def initialize(value) @score = value * 2 end end player1 = Player.new(10) player2 = Player.new(20) cheater = Cheater.new(20) puts player1 == player2 #=> false puts player1 < player2 #=> true puts cheater > player2 #=> true
obj.score end def <(obj) score < obj.score end def >(obj) score > obj.score end end class Player include ComparableScores attr_reader :score def initialize(value) @score = value end end class Cheater < Player def initialize(value) @score = value * 2 end end player1 = Player.new(10) player2 = Player.new(20) cheater = Cheater.new(20) puts player1 == player2 #=> false puts player1 < player2 #=> true puts cheater > player2 #=> true
puts "c".c? #=> true … puts "y".z? #=> false Wymagania: • obsłużyć co najmniej wszystkie litery alfabetu • obsłużyć tylko metody ze znakiem zapytania na końcu • napisać jak najkrótszy kod