如何在rails中创建对象数组?

时间:2011-08-03 07:01:52

标签: ruby-on-rails ruby arrays

我需要知道如何在rails中创建对象数组以及如何在其中添加元素。

我刚接触ruby on rails,这可能是某种愚蠢的问题,但我无法找到确切的答案。那么请提供一些关于此的专家意见

4 个答案:

答案 0 :(得分:17)

你需要的只是一个数组:

objArray = []
# or, if you want to be verbose
objArray = Array.new

要推送,push或使用<<

objArray.push 17
>>> [17]

objArray << 4
>>> [17, 4]

您可以使用您喜欢的任何对象,它不必是特定类型。

答案 1 :(得分:12)

由于一切都是Ruby中的对象(包括数字和字符串),因此您创建的任何数组都是一个对象数组,对它可以容纳的对象类型没有限制。 Ruby中没有整数数组小部件数组。数组只是数组。

my_array = [24, :a_symbol, 'a string', Object.new, [1,2,3]]

如您所见,数组可以包含任何内容,甚至包含另一个数组。

答案 2 :(得分:2)

根据具体情况,我喜欢这个构造来初始化数组。

# Create a new array of 10 new objects
Array.new(10) { Object.new }
#=> [#<Object:0x007fd2709e9310>, #<Object:0x007fd2709e92e8>, #<Object:0x007fd2709e92c0>, #<Object:0x007fd2709e9298>, #<Object:0x007fd2709e9270>, #<Object:0x007fd2709e9248>, #<Object:0x007fd2709e9220>, #<Object:0x007fd2709e91f8>, #<Object:0x007fd2709e91d0>, #<Object:0x007fd2709e91a8>]

答案 3 :(得分:0)

此外,如果您需要创建单词数组,可以使用下一个构造来避免使用引号:

onClickGetDates(appt) {
    this.dialogService
      .confirmDateRange('Get Dates', 'Enter two dates:',
        appt.beginDate, appt.endDate)
      .subscribe(res => 
      {this.dateRange = res;
//Set the appt's properties inside the subscribe
appt.beginDate = this.dateRange[0];
appt.endDate = this.dateRange[1];
this.apptdata.updateAppt(appt);
});

array = %w[first second third]