Skip to content

Instantly share code, notes, and snippets.

View mehdi-farsi's full-sized avatar

Mehdi FARSI mehdi-farsi

View GitHub Profile
require 'ostruct'
computer = OpenStruct.new(ram: '4GB')
computer.class # => OpenStruct
computer.methods(false) # => []
computer[:ram] # => "4GB"
computer.methods(false) # => []
computer.ram # => "4GB"
require 'ostruct'
computer = OpenStruct.new(ram: '4GB')
computer.class # => OpenStruct
computer.ram # => "4GB"
computer[:ram] # => "4GB"
computer['ram'] # => "4GB"
computer.screens = 2
Struct.new('Address', :street, :city, :zip)
Struct::Address.superclass # => Struct
home = Struct::Address.new('Broadway', 'NYC', 10040)
home.class # => Struct::Address
Address = Struct.new(:street, :city, :zip)
class Address
def full_address
"#{street} #{city} #{zip}"
end
end
home = Address.new('Broadway', 'NYC', 10040)
Address = Struct.new(:street, :city, :zip)
Address.class # => Class
Address.superclass # => Struct
home # => #<struct Address street="Broadway", city="NYC", zip=10040>
home.street = 'Opéra'
home[:city] = 'Paris'
home['zip'] = 75009
home # => #<struct Address street="Opéra", city="Paris", zip=75009>
home.street # => "Broadway"
home[:city] # => "NYC"
home['zip'] # => 10040
home.not_exist # => NoMethodError: undefined method `not_exist'
home[:not_exist] # => NameError: no member 'not_exist' in struct
home['not_exist'] # => NameError: no member 'not_exist' in struct
Address = Struct.new(:street, :city, :zip)
home = Address.new('Broadway', 'NYC', 10040)
class User
def self.inherited(user_type)
puts "#{user_type} is a kind of user"
end
end
class Tenant < User
end
module Commentable
def self.included(commentable_entity)
puts "The #{commentable_entity} entity now accepts comments !"
end
end
class MediumPost
include Commentable
end