Ruby Array - 初学者学习数组和方法

时间:2014-01-13 04:01:06

标签: ruby arrays methods

我正在尝试在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创建一个数字数组
  • new_array创建一个字符串数组

到目前为止,我有以下代码,但似乎无法将另一个数组放在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")

如何在上述方法结构中使用四个参数并返回具有相同参数的数组?

3 个答案:

答案 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_lastnew_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方法定义为仅定义数字和字符串数组,并且字符串数组是第二个定义的,因此它将始终返回字符串数组的值。