Map ve Collect
Coddy'nin Ruby Journey'sinin Temeller bölümünün bir parçası — ders 68 / 88.
each elemanlar üzerinde işlemler gerçekleştirmek için harika olsa da, bazen bir diziyi yeni bir diziye dönüştürmek istersiniz. map metodu (collect olarak da adlandırılır) tam olarak bunu yapar: bloğunuzun her bir eleman üzerinde çalıştırılmasının sonuçlarını içeren yeni bir dizi oluşturur.
numbers = [1, 2, 3, 4]
doubled = numbers.map { |n| n * 2 }
puts doubled # Çıktı: 2, 4, 6, 8each'den temel farkı, map'in dönüştürülmüş değerlerle yeni bir dizi döndürmesidir. Orijinal dizi değişmeden kalır.
İşte sıcaklıkları Santigrat'tan (Celsius) Fahrenhayt'a (Fahrenheit) dönüştüren pratik bir örnek:
celsius = [0, 20, 100]
fahrenheit = celsius.map { |c| c * 9 / 5 + 32 }
puts fahrenheit # Çıktılar: 32, 68, 212map metodunu dizelerle de kullanabilirsiniz:
names = ["alice", "bob"]
capitalized = names.map { |name| name.capitalize }
puts capitalized # Çıktı: Alice, Bobmap ve collect metotları aynıdır. Ruby her iki ismi de sağlar, böylece kodunuzda hangisi daha iyi okunuyorsa onu kullanabilirsiniz. Çoğu Ruby geliştiricisi, daha kısa olduğu için map metodunu tercih eder.
Görev
KolayVirgülle ayrılmış tam sayılar içeren tek bir girdi satırı okuyun (örneğin, 2,4,6,8,10).
Girdiyi bir tam sayı dizisine bölün, ardından her sayının karesinin alındığı (kendisiyle çarpıldığı) yeni bir dizi oluşturmak için map metodunu kullanın.
Yeni kare alınmış dizinin her bir elemanını kendi satırında yazdırın.
Örneğin, girdi 2,4,6,8,10 ise, çıktı şu şekilde olmalıdır:
4
16
36
64
100Eğer girdi 1,2,3,4,5 ise, çıktı şu şekilde olmalıdır:
1
4
9
16
25Eğer girdi 3,7,11 ise, çıktı şu şekilde olmalıdır:
9
49
121Eğer girdi 10 ise, çıktı şu şekilde olmalıdır:
100Kopya kağıdı
map yöntemi (ayrıca collect olarak da adlandırılır), her bir öğeye bir blok uygulayarak bir diziyi yeni bir diziye dönüştürür. Orijinal diziyi değiştirmeden, dönüştürülmüş değerleri içeren yeni bir dizi döndürür.
numbers = [1, 2, 3, 4]
doubled = numbers.map { |n| n * 2 }
puts doubled # Çıktı: 2, 4, 6, 8Sıcaklık dönüşümü ile örnek:
celsius = [0, 20, 100]
fahrenheit = celsius.map { |c| c * 9 / 5 + 32 }
puts fahrenheit # Çıktı: 32, 68, 212Dizgiler (stringler) ile örnek:
names = ["alice", "bob"]
capitalized = names.map { |name| name.capitalize }
puts capitalized # Çıktı: Alice, Bobmap ve collect özdeş yöntemlerdir. Çoğu Ruby geliştiricisi map yöntemini tercih eder.
Kendin dene
# Virgülle ayrılmış girdiyi oku
input = gets.chomp
# YAPILACAK: Kodunuzu aşağıya yazın
# 1. Giriş dizesini bir tam sayı dizisine bölün
# 2. Her sayının karesini almak için map metodunu kullanın
# 3. Her bir karesi alınmış sayıyı kendi satırına yazdırınBu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Temeller bölümündeki tüm dersler
4Operatörler Bölüm 2
Mantıksal Operatörler Bölüm 1Mantıksal Operatörler Bölüm 2Özet - Basit MantıkMantıksal Operatörler Bölüm 3Mantıksal Operatörler Bölüm 47Hesap Paylaşımı Hesaplayıcısı
Hoş Geldiniz MesajıKullanıcı Girdisi Alma13İleri Seviye Diziler
Aralıklar ile Dizi Dilimlemeİndeksler ile Dizi DilimlemeDizi OperatörleriInclude? Metodu2Değişkenler ve Veri Tipleri
Sayılar ve DeğişkenlerString Veri TipiBoolean Veri TipiSymbol Veri TipiVeri Tiplerini Kontrol Etmeİsimlendirme KurallarıÖzet - Değişken Oluşturma8Döngüler
Aralıklar ile For DöngüsüWhile DöngüsüBreakNextÖzet - FaktöriyelTimes DöngüsüUntil Döngüsüİç İçe DöngülerÖzet - Dinamik Girdi3Operatörler Bölüm 1
Aritmetik OperatörlerModulo OperatörüAritmetik KısayollarÖzet - Basit MatematikKarşılaştırma Operatörleri6Temel IO
puts ile Çıktı Almaprint ve p ile Çıktı AlmaDeğişkenlerle Çıktı Almagets ile Girdi AlmaChomp MetoduTip DönüşümüÖzet - Yaş HesaplayıcıÖzet - Doğru mu Yanlış mı9Metotlar
Metot TanımlamaMetot ParametreleriDönüş DeğerleriÖzet - Sigma MetoduÖzet - Doğrulama MetoduVarsayılan Parametre Değerleri12Koleksiyonlar Üzerinde Yineleme
Each Yineleyicisiİndeks ile EachStringler Üzerinde YinelemeMap ve Collect