【发布时间】:2013-11-06 22:11:08
【问题描述】:
我想做的是创建一个可以将数组作为参数的方法。数组中应该有一些数字。该方法将返回数组包含其中每个数字的次数。我知道可能有很多方法可以做到这一点,但如果人们能帮助我理解为什么我的方法行不通,而不是仅仅建议我做一些完全不同的事情,我将不胜感激。
所以我先试试这个方法
def score (dice)
dice.each do |die|
x = /(die)/.match(dice.to_s).length
end
x
end
并用score ([5])expecting 调用它以获得1的输出。但是,我得到了
NoMethodError: undefined method `length' for nil:NilClass
from t2.rb:22:in `block in score'
from t2.rb:21:in `each'
from t2.rb:21:in `score'
from (irb):2
from /home/macs/.rvm/rubies/ruby-2.0.0-p247/bin/irb:13:in `<main>'
我也尝试稍微改变匹配语句(去掉to_s)所以它是
def score (dice)
dice.each do |die|
x = /(die)/.match(dice).length
end
x
end
并用score ([5]) 调用它,我明白了
TypeError: no implicit conversion of Array into String
from t2.rb:22:in `match'
from t2.rb:22:in `block in score'
from t2.rb:21:in `each'
from t2.rb:21:in `score'
from (irb):2
from /home/macs/.rvm/rubies/ruby-2.0.0-p247/bin/irb:13:in `<main>'
真的不知道我应该如何完成这种匹配。
【问题讨论】:
-
我不确定你要去哪里。这是什么
/die/模式,它与整数数组有什么关系? -
@SergioTulentsev 当我调用该方法时,我为
dice输入了一个整数数组。当我在dice数组上运行每个循环时,我将每个数组项命名为die。另外,在我看来,这是一个非常简洁的例子。代码 sn-p 很短,我包含的其余代码大部分只是我收到的错误消息的复制粘贴。 -
嗯,它可能简洁,但它不是可执行的。一个好的 SSCCE 包括几个输入示例以及预期输出。
标签: ruby