Ruby开关输出意外值
我不是每天都在用Ruby工作,但我正试图温习一下。在exercism.io上,我正在尝试完成一个练习,但我提出的解决方案不起作用。以下是测试代码:Ruby开关输出意外值,ruby,Ruby,我不是每天都在用Ruby工作,但我正试图温习一下。在exercism.io上,我正在尝试完成一个练习,但我提出的解决方案不起作用。以下是测试代码: class ResistorColorDuoTest < Minitest::Test def test_brown_and_black # skip assert_equal 10, ResistorColorDuo.value(["brown", "black"]) end e
class ResistorColorDuoTest < Minitest::Test
def test_brown_and_black
# skip
assert_equal 10, ResistorColorDuo.value(["brown", "black"])
end
end
该方法的输出为-1。我搞不清楚我搞砸了什么。如有任何建议,我们将不胜感激。感谢您的阅读。您使用case就像使用if一样
将evalutes设置为true,以便将true与您的颜色进行比较
如果有其他选择,请切换到
def self.value(colors)
if (colors - ["brown", "black"]).empty?
10
else
-1
end
end
你在使用case,就像它是一个if
将evalutes设置为true,以便将true与您的颜色进行比较
如果有其他选择,请切换到
def self.value(colors)
if (colors - ["brown", "black"]).empty?
10
else
-1
end
end
基于:
编辑:直到现在我才真正想到这一点,但有什么理由你不能这么做吗
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
基于:
编辑:直到现在我才真正想到这一点,但有什么理由你不能这么做吗
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
非常感谢。我会往上面扔更多的东西,但这样就完成了任务。非常感谢您的及时回复。非常感谢,非常荣幸,谢谢。我会往上面扔更多的东西,但这样就完成了任务。非常感谢您的及时回复。非常感谢。我很高兴回答您的问题,但像这样的用例与更传统的if/else链相比,没有什么优势。@tadman True。我已经添加了更多的case-y元素,以防它们有所帮助。没错,但是像这样使用case,与更传统的if/else链相比,它没有什么优势。@tadman True。我添加了两个更多的case-y内容,以防它们有所帮助。提示:对于单字的简单数组,请使用%w[棕黑色]。提示:对于单字的简单数组,请使用%w[棕黑色]。