Enumerable-moduulin sisällyttäminen
Saat map- ja select-metodit käyttöösi.
Enumerable-moduulin sisällyttäminen on ilmainen Ruby Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Ruby Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Ruby Academy-kurssilla on yhteensä 4 oppituntia.
map ja select kaupan päälle
Kun luokassasi on each, Enumerable-mixin lisää välittömästi käyttöösi map-, select-, reduce-, sort-, min-, max-metodit ja monia muita. Kaikki perustuvat omaan each-metodiisi.
class Bag
include Enumerable
def initialize(*x); @x = x; end
def each; @x.each { |i| yield i }; end
end
p Bag.new(1, 2, 3).map { |n| n * 10 }Sopimus
Sopimus on yksinkertainen: liitä Enumerable mukaan ja määrittele each. Enumerable kutsuu sisäisesti omaa each-metodiasi ja käyttää sitä kaiken muun perustana.
class Squares
include Enumerable
def initialize(n); @n = n; end
def each
(1..@n).each { |i| yield i * i }
end
end
p Squares.new(5).to_aSuodatus select-metodilla
select säilyttää alkiot, joiden kohdalla lohkon tulos on tosi. reject toimii päinvastoin.
class Nums
include Enumerable
def initialize(*x); @x = x; end
def each; @x.each { |i| yield i }; end
end
n = Nums.new(1, 2, 3, 4, 5, 6)
p n.select(&:even?)
p n.reject(&:even?)Aggregointi reduce-metodilla
reduce yhdistää kokoelman yhdeksi arvoksi.
class Cart
include Enumerable
def initialize(*p); @p = p; end
def each; @p.each { |i| yield i }; end
end
puts Cart.new(5, 10, 15).reduce(:+)min, max, sort
Vertailuun perustuvat metodit toimivat, kunhan alkiot ovat vertailukelpoisia.
class Scores
include Enumerable
def initialize(*n); @n = n; end
def each; @n.each { |i| yield i }; end
end
s = Scores.new(7, 2, 9, 4)
puts s.min
puts s.max
p s.sortfind ja include?
find palauttaa ensimmäisen vastaavan alkion ja include? tarkistaa jäsenyyden.
class Words
include Enumerable
def initialize(*w); @w = w; end
def each; @w.each { |x| yield x }; end
end
w = Words.new("cat", "dog", "bird")
puts w.find { |x| x.length == 4 }
puts w.include?("dog")group_by ja partition
Enumerable tarjoaa tehokkaita ryhmittelyapureita.
class Nums
include Enumerable
def initialize(*x); @x = x; end
def each; @x.each { |i| yield i }; end
end
n = Nums.new(1, 2, 3, 4, 5)
p n.group_by(&:even?)
p n.partition(&:odd?)Lajittelu tarvitsee vertailukelpoiset alkiot
Jos alkiosi ovat mukautettuja olioita, anna niille <=> (Comparable-mixin avulla), jotta sort-, min- ja max-metodit tietävät niiden järjestyksen.
Item = Struct.new(:price) do
include Comparable
def <=>(o); price <=> o.price; end
end
class Shelf
include Enumerable
def initialize(*i); @i = i; end
def each; @i.each { |x| yield x }; end
end
shelf = Shelf.new(Item.new(30), Item.new(10), Item.new(20))
p shelf.min.priceeach_with_index
Enumerable tarjoaa myös each_with_index- ja each_with_object-metodit monipuolisempaan iteraatioon.
class Letters
include Enumerable
def initialize(*l); @l = l; end
def each; @l.each { |x| yield x }; end
end
Letters.new("a", "b", "c").each_with_index do |letter, i|
puts "#{i}: #{letter}"
endMetodien ketjuttaminen
Koska nämä metodit palauttavat taulukoita tai enumeraattoreita, voit ketjuttaa ne ilmaisuvoimaisiksi käsittelyketjuiksi.
class Nums
include Enumerable
def initialize(*x); @x = x; end
def each; @x.each { |i| yield i }; end
end
result = Nums.new(1, 2, 3, 4, 5, 6).select(&:even?).map { |n| n * n }
p resultKokonaisuus
Enumerable-mixin mukaan ottamisesta on suuri hyöty:
- Määrittele
eachkerran. - Saat käyttöösi map-, select-, reduce-, sort-, find-, group_by-metodit ja kymmeniä muita.
- Lisää alkioihin Comparable-mixin, jotta saat järjestämiseen tarvittavat metodit.
class Range5
include Enumerable
def each; (1..5).each { |n| yield n }; end
end
puts Range5.new.sumPikatarkistus
Testaa, miten hyvin ymmärrät Enumerable-mixin mukaan ottamisen.
Kertaus
Opit ottamaan Enumerable-mixin mukaan:
- Määrittele
each, liitä moduuli mukaan ja saat koko työkalupakin. - map-, select-, reduce-, find- ja group_by-metodit toimivat kaikki oman
each-metodisi päällä. - Alkioiden järjestäminen tarvitsee
<=>-metodin. - Metodit voidaan ketjuttaa käsittelyketjuiksi.
class Tens
include Enumerable
def each; [10, 20, 30].each { |n| yield n }; end
end
p Tens.new.map { |n| n + 1 }Opi Ruby tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 29
- Oppitunnit
- 109
Usein kysytyt kysymykset
Onko oppitunti ”Enumerable-moduulin sisällyttäminen” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Ruby Academy-oppimispolun 3 oppituntia, myös oppitunnin “Enumerable-moduulin sisällyttäminen”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Ruby Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Enumerable-moduulin sisällyttäminen”?
Saat map- ja select-metodit käyttöösi. Harjoittelet Ruby Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Ruby Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Ruby Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.
Kuinka kauan ”Enumerable-moduulin sisällyttäminen”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Ruby Academy-oppitunnilla?
Kyllä. Jokainen Ruby Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Mukautetun each-metodin kirjoittaminen
- Enumerable-moduulin sisällyttäminen
- Laiskat enumeratorit
- Enumerator-oliot