我不是Ruby的日常工作人员,但我正在努力温习它。在exercism.io上,有一个练习我正在尝试完成,但我想出的解决方案不起作用。下面是测试代码:
class ResistorColorDuoTest < Minitest::Test
def test_brown_and_black
# skip
assert_equal 10, ResistorColorDuo.value(["brown", "black"])
end
end
这是我想出的解决方案:
module ResistorColorDuo
def self.value(colors)
case colors
when (colors - ["brown", "black"]).empty?
10
else
-1
end
end
end
该方法的输出为-1。我搞不清楚我搞砸了什么。我们非常感谢您的任何建议。感谢您的阅读。
发布于 2020-11-08 14:17:03
您可以像使用if
一样使用case
。
(colors - ["brown", "black"]).empty?
计算结果为true
,因此将true
与您的colors
进行比较
切换到if-else
def self.value(colors)
if (colors - ["brown", "black"]).empty?
10
else
-1
end
end
发布于 2020-11-08 14:47:33
基于:https://stackoverflow.com/a/42269911/14454939
colors = ["brown", "black"]
case
when (colors - ["brown", "black"]).empty?
10
else
-1
end
# => 10
colors = ["brown", "blue"]
case
when (colors - ["brown", "black"]).empty?
10
else
-1
end
# => -1
编辑:我直到现在才真正考虑到这一点,但有什么原因你不能做吗?:
colors = ["brown", "blue"]
case colors
when ["brown", "black"]
10
when ["brown", "blue"]
20
else
-1
end
# => 20
或者如果顺序不重要:
colors = ["brown", "blue"]
case colors.sort
when ["black", "brown"] #.sort if you don't want to sort manually
10
when ["blue", "brown"]
20
else
-1
end
# => 20
https://stackoverflow.com/questions/64739031
复制相似问题