`*';:负参数(ArgumentError)Ruby

`*';:负参数(ArgumentError)Ruby,ruby,Ruby,在Codewars IDE中运行此代码时,我一直会遇到此负面参数错误。它在终端中运行良好,但在代码战中,它通过了测试并同时运行此错误消息 STDERR main.rb:5:in `*': negative argument (ArgumentError) from main.rb:5:in `maskify' from main.rb:9:in `<main>' 我是Ruby新手,但我从未听说过它在.slice中使用负数有问题。我是不是遗漏了什么?谢谢。您不考虑cc

在Codewars IDE中运行此代码时,我一直会遇到此负面参数错误。它在终端中运行良好,但在代码战中,它通过了测试并同时运行此错误消息

STDERR
main.rb:5:in `*': negative argument (ArgumentError)
    from main.rb:5:in `maskify'
    from main.rb:9:in `<main>'

我是Ruby新手,但我从未听说过它在.slice中使用负数有问题。我是不是遗漏了什么?谢谢。

您不考虑
cc
小于4个符号的情况

表达式
“#”*(x.length-4)
会引发错误,因为不能将字符串乘以负数

尝试使用
Array#max
方法来处理此问题:

“#”*[x.length-4,0]。最大值

它不是
切片
。是的。从证据上看,
cc.to_.length<4
def maskify(cc)
  x = cc.to_s
  y = "#" * (x.length - 4)
  return y + x.slice(-4..-1)
end