2016-08-01 48 views
0

所以我需要創建一個方法,它接收一個名稱數組並輸出一組字符串。我如何將輸出存儲到數組中?所以,而不是有一個名稱數組我有一個問候數組?將輸出存儲到Ruby中的數組中

def badge_maker(array) 
 
    array.each do |i| 
 
    counter = 0 
 
    while counter < 7 
 
     array[counter] << "Hello, my name is #{i}." 
 
     counter += i 
 
    end 
 
    return array 
 
    end 
 
end 
 
arrayOne = ["Edsger","Ada","Charles","Alan","Grace","Linus","Matz"] 
 

 
badge_maker(arrayOne)

回答

1

這是未經測試,但應該做的伎倆:

def badge_maker(names) 
    greetings = [] # initialize greetings as an empty array 
    names.each do |name| # for each name in the names array 
    greetings << "Hello, my name is #{name}." # add a greeting for that name 
    end 
    return greetings # return the array of all greetings, at the end 
end 
arrayOne = ["Edsger","Ada","Charles","Alan","Grace","Linus","Matz"] 

badge_maker(arrayOne) 

或者,如果你想真正改造原有的陣列,而不是創建一個新的數組的問候,然後這樣做:

def badge_maker(names) 
    names.map! do |name| # for each name in the names array 
    "Hello, my name is #{name}." # convert it to a greeting for that name 
    end 
end 
arrayOne = ["Edsger","Ada","Charles","Alan","Grace","Linus","Matz"] 

badge_maker(arrayOne) 
# now, arrayOne will contain an array of greetings, not names 
+0

謝謝,我已修復它。 –

2

你c如果您想修改原始數組,請使用map!。但是 - 無論您如何處理它 - 像eachmap這樣的迭代方法都是您的朋友,因爲它隱式處理了集合中元素的數量。

def badge_maker(array) 
    array.map! do |el| 
    "Hello " + el 
    end 
end 

array_one = ["Edsger","Ada","Charles","Alan","Grace","Linus","Matz"] 

badge_maker(array_one) 

puts array_one 
#=> Hello Edsger 
#=> Hello Ada 
#=> Hello Charles 
#=> Hello Alan 
#=> Hello Grace 
#=> Hello Linus 
#=> Hello Matz 
5

您可以使用Array#productEnumerable#mapArray#join

arr = ["Edsger","Ada","Charles","Alan","Grace","Linus","Matz"] 

["How 'ya doin, "].product(arr).map(&:join) 
    #=> ["How 'ya doin, Edsger", "How 'ya doin, Ada", "How 'ya doin, Charles", 
    # "How 'ya doin, Alan", "How 'ya doin, Grace", "How 'ya doin, Linus", 
    # "How 'ya doin, Matz"] 
相關問題