RubyKoans 113/282 - 类型不匹配:给定字符串/我怎么能用 irb 解决自己



当试图完成about_method koans时,我不断在第39和42行遇到"类型不匹配:给定字符串"错误。我的第一个问题是为什么会出现错误?我的第二个问题是我怎么能用 irb 自己解决这个问题?

 require File.expand_path(File.dirname(__FILE__) + '/neo')
 def my_global_method(a,b)
   a + b
 end
    class AboutMethods < Neo::Koan
    def test_calling_global_methods_with_wrong_number_of_arguments
        exception = assert_raise(ArgumentError) do
          my_global_method
        end
        assert_match(/__/, exception.message)
        exception = assert_raise(ArgumentError) do
          my_global_method(1,2,3)
        end
        assert_match(/__/, exception.message)
      end
    #...
    end

错误和我的工作

一个。如果我将断言更改为

assert_match(/"错误的参数数(0 表示 2)"/, exception.message)

它导致:

预期"错误的参数数(0 表示 2)"匹配/"错误的参数数(0 表示 2)"/

二.如果我将其更改为

assert_match("错误的参数数(0 表示 2)",异常消息)

它导致:

类型不匹配:给定字符串

我得到两行assert_match相同的结果。

assert_match(/wrong number of arguments (0 for 2)/, exception.message)

没有双引号和转义括号。

第一个失败是因为括号是正则表达式中的特殊字符,所以你需要用反斜杠转义它们。正则表达式中也有引号,字符串中不存在引号。 第二次失败可能是因为assert_match期望正则表达式作为第一个参数。

至于使用 irb 来

调试这些问题,您可以使用 irb 来查看实际字符串是否与您提供的正则表达式匹配,如下所示:

2.0.0p247 :001 >  /"wrong number of arguments (0 for 2)"/ =~ "wrong number of arguments (0 for 2)"
 => nil

然后,您可以减少左侧和右侧,直到它们匹配,然后添加回字符,直到您找出有问题的字符。

我不确定irb如何帮助解决第二个问题。

/["wrong number of arguments (0 for 2)"]/ 

为我工作

相关内容

最新更新