Arrays Ruby类型错误:没有将符号隐式转换为整数
所以我有一个数组和散列的数据集,我试图通过求和:COST键来找到每个驱动程序的总收入。不管我在最后一个块中尝试了什么,我都会得到一个错误:没有将Symbol/Hash/String隐式转换为整数。谢谢你的帮助 由于您在数组上使用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_
[]
,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]}}
的东西也可以使用。