Skip to content

Instantly share code, notes, and snippets.

@rrmartins
Created June 2, 2012 14:22
Show Gist options
  • Save rrmartins/2858618 to your computer and use it in GitHub Desktop.
Save rrmartins/2858618 to your computer and use it in GitHub Desktop.
Week
class Week
attr_accessor :segunda_feira, :terca_feira, :quarta_feira, :quinta_feira, :sexta_feira
def initialize(segunda_feira,terca_feira,quarta_feira,quinta_feira,sexta_feira)
@segunda_feira = segunda_feira
@terca_feira = terca_feira
@quarta_feira = quarta_feira
@quinta_feira = quinta_feira
@sexta_feira = sexta_feira
end
def to_s
"Segunda_Feira = #{@segunda_feira}, Terca_Feira = #{@terca_feira}, Quarta_Feira = #{@quarta_feira}, Quinta_Feira = #{@quinta_feira}, Sexta_Feira = #{@sexta_feira}"
end
def dias_true
dias = []
dias << "segunda_feira".to_sym.to_s if @segunda_feira
dias << "terca_feira".to_sym.to_s if @terca_feira
dias << "quarta_feira".to_sym.to_s if @quarta_feira
dias << "quinta_feira".to_sym.to_s if @quinta_feira
dias << "sexta_feira".to_sym.to_s if @sexta_feira
dias_t = '['+dias.join(", ")+']'
return dias_t
end
end
disciplina1 = Week.new(true,false,true,false,true)
puts disciplina1.dias_true # quero que retorne [segunda_feira, quarta_feira, sexta_feira]
@digoonrails
Copy link

class Week
attr_accessor :segunda, :terca, :quarta, :quinta, :sexta

def initialize(*args)
@segunda, @terca, @quarta, @quinta, @Sexta = args
end

def attrs
%w[segunda terca quarta quinta sexta]
end

def disponiveis
dias = []
attrs.each { |atributo| dias << "#{atributo}_feira" if send(atributo) }
"[#{dias.join(', ')}]"
end
end

week = Week.new(true, false, true, false)
puts week.disponiveis

Uma forma interessante seria passar os dias num hash como o exemplo abaixo, neste caso precisa adaptar o initialize para o hash.

  • week = Week.new(:segunda => true, :terca => false, :quarta => true, :quinta => false, :sexta => true)

@lukelex
Copy link

lukelex commented Jun 2, 2012

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment