Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby开关输出意外值_Ruby - Fatal编程技术网

Ruby开关输出意外值

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

我不是每天都在用Ruby工作,但我正试图温习一下。在exercism.io上,我正在尝试完成一个练习,但我提出的解决方案不起作用。以下是测试代码:

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[棕黑色]。