Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/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 预期为:0,但实际为:1_Ruby - Fatal编程技术网

Ruby 预期为:0,但实际为:1

Ruby 预期为:0,但实际为:1,ruby,Ruby,我一直在做一项任务,创建一个返回笑脸总数的函数。有效的笑脸看起来像:“:):D;-D:~”,无效的笑脸:“;(:>:}:” 下面我的解决方案抛出以下错误消息“预期为0,但实际为1” 目前,我的解决方案通过了5项基本测试中的4项: Basic tests Test Passed: Value == 0 Test Passed: Value == 4 Test Passed: Value == 2 Test Passed: Value == 1 Expected: 0, instead got:

我一直在做一项任务,创建一个返回笑脸总数的函数。有效的笑脸看起来像:“:):D;-D:~”,无效的笑脸:“;(:>:}:”

下面我的解决方案抛出以下错误消息“预期为0,但实际为1”

目前,我的解决方案通过了5项基本测试中的4项:

 Basic tests
Test Passed: Value == 0
Test Passed: Value == 4
Test Passed: Value == 2
Test Passed: Value == 1
Expected: 0, instead got: 1
我已经尝试删除参数,但这只在最后一次测试中有效,其余的测试我都失败了。有什么建议吗?谢谢

下面的示例测试:

Test.describe("Basic tests") do
Test.assert_equals(count_smileys([]), 0)
Test.assert_equals(count_smileys([":D",":~)",";~D",":)"]), 4)
Test.assert_equals(count_smileys([":)",":(",":D",":O",":;"]), 2)
Test.assert_equals(count_smileys([";]", ":[", ";*", ":$", ";-D"]), 1)
Test.assert_equals(count_smileys([";", ")", ";*", ":$", "8-D"]), 0)
end
使用数组交集进行比较或检查 您没有显示实际的测试设置,因此我不会对此进行说明。但是,似乎您正在尝试使用的块形式来计算给定数组中的笑脸数。可以说,使用来测量数组交集的大小或检查交集的内容更简单。例如:

SMILEYS = [
  ":)", ":D", ";-D", ":~)", ";~D", "8~(", ";(", ":>", ":}", ":]",
 "8~P", "8-(", "; )", ";-P", ":~P", "~P", ":~P", "~P", "; (", ":-)",
 "8~D", "~)", "8D", "~)", "8 )", "; )", "~)", ":-D", " (", ";D",
 "8-D", "8-P", ";-D", ": D", ";~D", " ("
]

SMILEYS.&([":D", ":~)", ";~D", ":)"]).size == 4
#=> true

SMILEYS.&([":)", ":(", ":D", ":O", ":;"]).size == 2
#=> true

SMILEYS.&([";]", ":[", ";*", ":$", ";-D"]).size == 1
#=> true

SMILEYS.&([";", ")", ";*", ":$", "8-D"]).size == 0
#=> false
请注意,最后一次比较为false,因为您的笑脸列表中定义了
8-D
。具体来说:

SMILEYS.&([";", ")", ";*", ":$", "8-D"])
#=> ["8-D"]

所以期望值应该是
1
,除非
8-D
不属于可接受值的数组。如果是这种情况,请将其从包含允许值的变量或常量中删除。

您能提供一些示例输入和期望输出吗?刚刚添加到问题中。
“8-D”
位于基本数组中,但似乎不应用于测试。使用数组#计数来计算真实匹配项很难调试。使用
数组#和(其他数组)。大小
(或#计数,如果您愿意)不那么模糊,也更容易检查IMHO。既然测试数组的最后一个元素
“8-D”
包含在您的smiley数组中,为什么最后一个测试应该返回
0
交集给出唯一的元素。如果笑脸出现多次,则
.count
&.size
给出不同的结果。
SMILEYS.&([";", ")", ";*", ":$", "8-D"])
#=> ["8-D"]