【发布时间】:2017-05-03 19:51:56
【问题描述】:
我似乎在以下代码中遇到了类型错误:
def can_cast(hand, *spell_cost)
colored_mana_hand = Array.new
colored_mana_cost_aggregate = Array.new
colored_mana_spent = Array.new
colorless_mana_hand = 0
colorless_mana_cost_aggregate = 0
hand_array = hand.split("").sort
total_cost = spell_cost.join.split("").sort
hand_array.each do |i|
if hand_array[i].to_i != 0
colorless_mana_hand += hand_array[i].to_i
else
colored_mana_hand << hand_array[i]
end
end
total_cost.each do |i|
if total_cost[i].to_i != 0
colorless_mana_cost_aggregate += total_cost[i].to_i
else
colored_mana_cost_aggregate << total_cost[i]
end
end
colored_mana_cost_aggregate.each do |i|
if colored_mana_hand.include?(colored_mana_cost_aggregate[i])
colored_mana_spent << colored_mana_cost_aggregate[i]
colored_mana_hand.rotate(colored_mana_hand.index(colored_mana_cost_aggregate[i])).shift
end
end
colored_mana_spent == colored_mana_cost_aggregate && (colored_mana_hand.length + colorless_mana_hand) >= colorless_mana_cost_aggregate
end
看起来像这样
`[]': no implicit conversion of String into Integer (TypeError)
有人可以帮我吗?
我认为我将数组用作整数,但我看不出在哪里可能。
【问题讨论】:
-
不是 Ruby 程序员,但它抱怨您试图将 String 用作 Integer 并且它不想在您不知情的情况下这样做。看看to_i:apidock.com/ruby/String/to_i
-
在提供异常信息时,请包括引发异常的代码行。
标签: ruby array-algorithms