/ / Ruby Array - Débutant Découverte des tableaux et méthodes - ruby, tableaux, méthodes

Ruby Array - Débutant En savoir plus sur les tableaux et méthodes - ruby, tableaux, méthodes

J'essaie de surmonter une question dans un tutoriel Ruby où il pose la question suivante -

Créez une méthode nommée new_array. Il devrait prendre quatre arguments et retourner un tableau avec ces mêmes arguments. Commencez par définir la structure de la méthode: **

def new_array(a,b,c,d)
# return an array consisting of the arguments here
end

Ensuite, il fournit des spécifications pour procéder au reverse engineering du problème.

describe "new_array" do
it "creates an array of numbers" do
new_array(1,2,3,4).should eq([1,2,3,4])
end
it "creates an array of strings" do
new_array("a", "b", "c", "d").should eq(["a", "b", "c", "d"])
end
end

describe "first_and_last" do
it "creates new array with numbers" do
first_and_last([1,2,3]).should eq([1,3])
end
it "creates new array with strings" do
first_and_last(["a", "b", "c", "d"]).should eq(["a", "d"])
end
end

Vous devez rechercher les éléments suivants dans votre solution:

  • new_array crée un tableau de nombres
  • new_array crée un tableau de chaînes

Jusqu'ici, j'ai le code suivant, mais je ne peux pas sembler mettre un autre tableau dans la méthode new_array afin que je puisse également produire un tableau de chaînes.

def new_array(a,b,c,d)
# return an array consisting of the arguments here
numbers = [1,2,3,4]
string = ["a","b","c","d"]


end

new_array(1,2,3,4)
new_array("a","b","c","d")

Comment prendre quatre arguments et retourner un tableau avec ces mêmes arguments dans la structure de méthode ci-dessus?

Réponses:

0 pour la réponse № 1

Juste

def new_array(a,b,c,d)
[a, b, c, d]
end

Pour des arguments illimités, vous pouvez également faire:

def new_array(*arguments)
arguments
end

0 pour la réponse № 2

où vous avez:

def new_array(a,b,c,d)
# return an array consisting of the arguments here
numbers = [1,2,3,4]
string = ["a","b","c","d"]
end

votre code est exact, mais vous n'avez rien retourné. essayez d'ajouter une ligne supplémentaire qui dit numbers pour le retourner. ainsi:

def new_array(a, b, c, d)
# return an array consisting of the arguments here
numbers = [1, 2, 3, 4]
end

pourrait fonctionner, pour les besoins de votre tutoriel. en pratique, la réponse de xdazz est exacte à 100%


0 pour la réponse № 3

Il semble que le tutoriel attend deux méthodes: first_and_last et new_array.

first_and_last fera toujours la même chose, nous allons donc le définir en premier.

def first_and_last(*args)
[args[0], args[-1]] #returns a new array containing first and last arguments
end

Pour new_array vous avez deux options. Un qui ne prendra que 4 arguments, et un qui prendra un nombre illimité.

def new_array(a, b, c, d) #only takes four arguments
[a, b, c, d] #returns a new array containing those arguments in order given
end

def new_array(*args) #takes unlimited arguments
args #same thing, but more efficient on typing
end

C'est la même chose pour first_and_last bien sûr, suivant un format similaire. Cependant, cela devrait passer les spécifications données.

En plus de cela, il semblerait que la méthode que vous avez écrite soit un peu inactive. Ruby renvoie la dernière valeur renvoyée par une opération de la méthode, et définir une valeur renvoie également cette valeur comme suit: eval vais vous dire. Par exemple, le code x = 3 renvoie la valeur entière 3. Donc, puisque vous avez défini votre new_array méthode pour définir uniquement un nombre et un tableau de chaîne et le tableau de chaîne a été défini en second lieu, il retournera TOUJOURS la valeur du tableau de chaîne.