Menu
Coddy logo textTech

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, 8

each'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, 212

map metodunu dizelerle de kullanabilirsiniz:

names = ["alice", "bob"]
capitalized = names.map { |name| name.capitalize }

puts capitalized  # Çıktı: Alice, Bob

map 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.

challenge icon

Görev

Kolay

Virgü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
100

Eğer girdi 1,2,3,4,5 ise, çıktı şu şekilde olmalıdır:

1
4
9
16
25

Eğer girdi 3,7,11 ise, çıktı şu şekilde olmalıdır:

9
49
121

Eğer girdi 10 ise, çıktı şu şekilde olmalıdır:

100

Kopya 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, 8

Sıcaklık dönüşümü ile örnek:

celsius = [0, 20, 100]
fahrenheit = celsius.map { |c| c * 9 / 5 + 32 }
puts fahrenheit  # Çıktı: 32, 68, 212

Dizgiler (stringler) ile örnek:

names = ["alice", "bob"]
capitalized = names.map { |name| name.capitalize }
puts capitalized  # Çıktı: Alice, Bob

map 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ın
quiz iconKendini test et

Bu 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