Dostanie się do zawartości tablicy typu Hash

Witam, mam stworzoną tablice Hash z wiekiem osób :

pełnoletniość = {"Adam" => 16, "Robert" => 24, "Anna" => 14, "Marta" => 22}

I potrzebuję stworzyć metodę, która będzie pobierała tablice “pełnoletniość” jako pierwszy argument,
oraz drugim argumentem będzie wiek podany przy każdej osobie, następnie metoda będzie zwracała które osoby są pełnoletnie, a które nie.

Zrobiłem coś takiego, ale nie działa poprawnie:

class IloscLat
pełnoletniość = {"Adam" => 16,  "Robert" => 24, "Anna" => 14, "Marta" => 22}
def initialize(pełnoletniość, wiek)
@pełnoletniość = pełnoletniość
@wiek = wiek

if @wiek >18
puts pełnoletni
else 
puts niepelnoletni
end 
end 
end

Czołem,

poniżej pare uwag :slight_smile:

  1. nie używaj polskich znaków w kodzie ( staraj się korzystać z nazw angielskich ).
  2. nie wrzucaj do metody initialize “conditional statements”, ta metoda sluży tylko to inicjalizacji obiektu
  3. skoro masz hasha z imionami i wiekiem ( co można traktować jako stałą, przynajmniej tak sie domyslam :slight_smile: ) to mozesz iterować po tej tablicy i tam wstawić warunek sprawdzający wiek.
class IloscLat
  def initialize wiek_osob
    @wiek_osob = wiek_osob
  end

  def pelnoletni
    @wiek_osob.each do |imie, wiek|
      if wiek >= 18
        puts "#{imie} jest pełnoletni"
      else
        puts "#{imie} jest niepełnoletni"
      end
    end
  end
end

wiek_osob = {"Adam" => 16,  "Robert" => 24, "Anna" => 14, "Marta" => 22}
iL = IloscLat.new(wiek_osob)
iL.pelnoletni

Lub prościej:

{"Adam" => 16,  "Robert" => 24, "Anna" => 14, "Marta" => 22}.each do |imie, wiek|
  puts wiek>=18?"#{imie} jest pełnoletni":"#{imie} jest niepełnoletni"
end
{"Adam" => 16,  "Robert" => 24, "Anna" => 14, "Marta" => 22}.each do |imie, wiek|
  puts "#{imie} jest #{wiek >= 18 ? "" : "nie"}pełnoletni"
end

xD

{"Adam" => 16,  "Robert" => 24, "Anna" => 14, "Marta" => 22}.each do |imie, wiek|
  puts "#{imie} jest #{"nie" if wiek<18}pełnoletni"
end
1 Like

Dziękuję wszystkim za pomoc, nie wiedziałem że to takie proste, nigdy tez nie korzystałem z hasha i nie znałem iteracji. Dzięki również za rady, postaram się do nich stosować.