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 № 1Juste
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.