# class << self opens up self's singleton class, so that methods can be redefined for the current self object
class String
class << self
def value_of obj
obj.to_s
end
end
end
String.value_of 42 # => "42"
# This can also be written as a shorthand:
class String
def self.value_of obj
obj.to_s
end
end
# Even shorter
def String.value_of obj
obj.to_s
end
class SampleHumanClass
attr_accessor :name, :age, :gender
@@all = []
def initialize(name, age, gender)
@name = name
@age = age
@gender = gender
@@all << self
end
def self.all
@@all
end
end
#now we can create an instance of the class
mike = SampleHumanClass.new("Mike", 32, "Male")
class Dog # Initialize class!
def initialize(name) # Initialize function of class Dog
@name = name # Set name to param in class
end
def print_name() # Function to print out the name in params
puts @name # Puts!
end
end
my_dog = Dog.new "Bruno" # Create class and save it in variable
my_dog.print_name # Call print_name function from class
# Output:
# Bruno
class Customer
@@no_of_customers = 0
end
class Person
def initialize(name) # this is an empty class
end
end
p1 = Person.new("Ben")
class Person
def initialize(name)
@name = name #This is an instance variable
end
end
p1 = Person.new("Ben")
#To recall the name
class Person
def initialize(name)
@name = name
end
def name
@name
end
end
#We can call the above
p2=Person.new("Brian")
puts p2.name
#Attribute writers
class Person
def initialize(name)
@name = name
end
def name
@name
end
def password=(password)
@password = password
end
end
p3=Person.new("Margret")
p3.password = "lovydovy"
p p3
class Library
attr_accessor :title, :author
def readBook()
puts "Reading #{self.title} by #{self.author}"
end
end
book1 = Library.new()
book1.title = "Shreds of tenderness"
book1.author = "Dr Mwaniki"
book1.readBook()
puts book1.title