我正在尝试在Ruby教程中回答一个问题,它要求以下内容 -
创建名为new_array的方法。它应该采用四个参数并返回一个具有相同参数的数组。首先定义方法结构:**
def new_array(a,b,c,d)
# return an array consisting of the arguments here
end
然后它提供Specs来反向设计问题。**
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
您需要从解决方案中找到以下内容:
到目前为止,我有以下代码,但似乎无法将另一个数组放在new_array方法中,这样我也可以生成一个字符串数组。
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")
如何在上述方法结构中使用四个参数并返回具有相同参数的数组?
答案 0 :(得分:0)
只是
def new_array(a,b,c,d)
[a, b, c, d]
end
对于无限制的参数,你也可以这样做:
def new_array(*arguments)
arguments
end
答案 1 :(得分:0)
你有:
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
您的代码是准确的,但您没有返回任何内容。尝试再添加一行,只需说numbers
即可返回。像这样:
def new_array(a, b, c, d)
# return an array consisting of the arguments here
numbers = [1, 2, 3, 4]
end
出于本教程的目的,可能有用。在实践中,xdazz的答案是100%正确的
答案 2 :(得分:0)
教程似乎期待两种方法:first_and_last
和new_array
。
first_and_last
将始终做同样的事情,所以我们首先定义它。
def first_and_last(*args)
[args[0], args[-1]] #returns a new array containing first and last arguments
end
对于new_array
,您有两种选择。一个只需要4个参数,一个将采用无限数量。
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
first_and_last
当然也遵循类似的格式。但是,这应该通过给出的规格。
最重要的是,看起来你写的方法有点偏。 Ruby返回方法中任何操作返回的最后一个值,设置值也会返回该值,eval
将告诉您。例如,代码x = 3
返回整数值3
。因此,由于您将new_array
方法定义为仅定义数字和字符串数组,并且字符串数组是第二个定义的,因此它将始终返回字符串数组的值。