2016-08-01 7 views
0

Also muss ich eine Methode erstellen, die ein Array von Namen übernimmt und eine Reihe von Zeichenfolgen ausgibt. Wie speichere ich diese Ausgabe in ein Array? Anstatt also eine Reihe von Namen zu haben, habe ich eine Reihe von Grüßen.Gespeicherte Ausgabe in ein Array in 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)

Antwort

1

Dies ist nicht getestet, aber sollte es tun:

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) 

Oder, wenn Sie wollen, tatsächlich das ursprüngliche Array umwandeln, anstatt erstellen Sie ein neues Array Grüße, dann folgendes tun:

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

Danke, ich habe es behoben. –

2

Sie c eine Verwendung map!, wenn Sie das ursprüngliche Array ändern möchten. Aber - wie auch immer Sie es angehen - eine iterative Methode wie each oder map ist Ihr Freund hier, weil es implizit die Anzahl der Elemente in der Sammlung behandelt.

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

Sie können Array#product, Enumerable#map und Array#join verwenden.

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"]