Skip to content

Instantly share code, notes, and snippets.

@muhammadyana
Created June 8, 2017 04:06
Show Gist options
  • Save muhammadyana/c4b0b456c3aab2d5fdf6dc273cee1627 to your computer and use it in GitHub Desktop.
Save muhammadyana/c4b0b456c3aab2d5fdf6dc273cee1627 to your computer and use it in GitHub Desktop.
#thursday-08-2017
#@41studio
#Muhammad Yana Mulyana
#mixins in ruby
puts "Enter Name 1 "
name1 = gets.chomp.to_s
puts "Enter name 2 "
name2 = gets.chomp.to_s
puts "Enyer Name 3 "
name3 = gets.chomp.to_s
class Person
include Comparable
attr_reader :name
def initialize(name)
@name = name
end
def to_s
"#{@name}"
end
def <=>(other)
self.name <=> other.name
end
end
p1 = Person.new(name1)
p2 = Person.new(name2)
p3 = Person.new(name3)
if p1 > p3
puts "#{p1.name}'s name > #{p3.name}'s name"
end
puts "Sorted List :"
#puts p1
puts [p1, p2, p3].sort
#======== Instance Variable in mixins=========
module Observable
def observers
@observer_list ||= []
end
def add_observer(obj)
observers << obj
end
def notify_observers
observers.each{
|o|
o.update
}
end
end
module Test
State = {}
def state=(value)
State[object_id] = value
end
def state
State[object_id]
end
end
class Client
include Test
end
c1 = Client.new
c2 = Client.new
c1.state = 'cat'
c2.state = 'dog'
p c1.state
p c2.state
# at = [[[[1,[0,[3]]]]]]
# p at[0][0][0][0]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment