Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Ruby类型错误:没有将符号隐式转换为整数_Arrays_Ruby_Hash_Nested_Typeerror - Fatal编程技术网

Arrays Ruby类型错误:没有将符号隐式转换为整数

Arrays Ruby类型错误:没有将符号隐式转换为整数,arrays,ruby,hash,nested,typeerror,Arrays,Ruby,Hash,Nested,Typeerror,所以我有一个数组和散列的数据集,我试图通过求和:COST键来找到每个驱动程序的总收入。不管我在最后一个块中尝试了什么,我都会得到一个错误:没有将Symbol/Hash/String隐式转换为整数。谢谢你的帮助 由于您在数组上使用[],Ruby希望您传递一个整数,因为数组只能通过其索引访问,这就是它返回此类错误的原因 rideshare_data = { DR0001: [ { DATE: "02_03_2016", COST: 10, RIDER_

所以我有一个数组和散列的数据集,我试图通过求和:COST键来找到每个驱动程序的总收入。不管我在最后一个块中尝试了什么,我都会得到一个错误:没有将Symbol/Hash/String隐式转换为整数。谢谢你的帮助

由于您在数组上使用
[]
,Ruby希望您传递一个整数,因为数组只能通过其索引访问,这就是它返回此类错误的原因

rideshare_data = {
  DR0001: [
    {
      DATE: "02_03_2016",
      COST: 10,
      RIDER_ID: "RD0003",
      RATING: 3
    },
    {
      DATE: "02_03_2016",
      COST: 30,
      RIDER_ID: "RD0015",
      RATING: 4
    },
    {
      DATE: "02_05_2016",
      COST: 45,
      RIDER_ID: "RD0003",
      RATING: 2
    }
  ],
  DR0002: [
    {
      DATE: "02_03_2016",
      COST: 25,
      RIDER_ID: "RD0073",
      RATING: 5
    },
    {
      DATE: "02_04_2016",
      COST: 15,
      RIDER_ID: "RD0013",
      RATING: 1
    },
    {
      DATE: "02_5_2016",
      COST: 35,
      RIDER_ID: "RD0066",
      RATING: 3
    }
  ]
}

rideshare_data.each do |driver_id, driver_data|
  money_earned = 0
  driver_data.each do |rides|
    rides.each do |ride, ride_data|
      money_earned = [ride_data][:COST].reduce(:+)
      puts "#{driver_id} earned #{money_earned} total"
    end
  end
end
[ride\u data]
的结果在数组中为您提供了一个字符串,因此,您无法传递符号,像访问散列对象一样访问密钥

由于您的
rideshare\u数据是一个散列,包含每个键(驱动程序id)的不同值,因此您只需迭代每个键的值并获取每个成本键的值,然后执行所需的操作:

no implicit conversion of Symbol into Integer (TypeError)
rideshare_数据。每个_与_对象([])do |(键,值),数组|

数组由于您在数组上使用
[]
,Ruby希望您传递一个整数,因为数组只能通过其索引访问,这就是为什么它返回这样的错误

rideshare_data = {
  DR0001: [
    {
      DATE: "02_03_2016",
      COST: 10,
      RIDER_ID: "RD0003",
      RATING: 3
    },
    {
      DATE: "02_03_2016",
      COST: 30,
      RIDER_ID: "RD0015",
      RATING: 4
    },
    {
      DATE: "02_05_2016",
      COST: 45,
      RIDER_ID: "RD0003",
      RATING: 2
    }
  ],
  DR0002: [
    {
      DATE: "02_03_2016",
      COST: 25,
      RIDER_ID: "RD0073",
      RATING: 5
    },
    {
      DATE: "02_04_2016",
      COST: 15,
      RIDER_ID: "RD0013",
      RATING: 1
    },
    {
      DATE: "02_5_2016",
      COST: 35,
      RIDER_ID: "RD0066",
      RATING: 3
    }
  ]
}

rideshare_data.each do |driver_id, driver_data|
  money_earned = 0
  driver_data.each do |rides|
    rides.each do |ride, ride_data|
      money_earned = [ride_data][:COST].reduce(:+)
      puts "#{driver_id} earned #{money_earned} total"
    end
  end
end
[ride\u data]
的结果在数组中为您提供了一个字符串,因此,您无法传递符号,像访问散列对象一样访问密钥

由于您的
rideshare\u数据是一个散列,包含每个键(驱动程序id)的不同值,因此您只需迭代每个键的值并获取每个成本键的值,然后执行所需的操作:

no implicit conversion of Symbol into Integer (TypeError)
rideshare_数据。每个_与_对象([])do |(键,值),数组|

数组可能只是一个
映射
,而不是
每个带有对象([])的\u(
此处?:)是的,没错,类似于
rideshare_data.map{key,values{key,values.sum{{value{value}value[:COST]}}
的东西也可以用。也许只是一个
map
而不是
每个带有{u对象([])
这里?:)是的,没错,类似于
rideshare_data.map{key,values{key,values.sum{{value{value}value[:COST]}}
的东西也可以使用。