ruby - `*': 否定参数 (ArgumentError) Ruby
问题描述
在 Codewars IDE 中运行此代码时,我不断收到此否定参数错误。它在终端中运行良好,但在 Codewars 中它都通过了测试并同时运行此错误消息。
STDERR
main.rb:5:in `*': negative argument (ArgumentError)
from main.rb:5:in `maskify'
from main.rb:9:in `<main>'
代码是
def maskify(cc)
x = cc.to_s
y = "#" * (x.length - 4)
return y + x.slice(-4..-1)
end
我是 Ruby 的新手,但我没有听说它在 .slice 中使用负数有问题。我在这里错过了什么吗?谢谢。
解决方案
您没有考虑cc
短于 4 个符号的情况。
并且表达式"#" * (x.length - 4)
会引发错误,因为您不能将字符串乘以负数。
尝试使用Array#max
方法来处理这个:
"#" * [x.length - 4, 0].max
推荐阅读
- docker - 如何使用 docker-compose 将 Docker 目录挂载到主机目录
- google-apps-script - 无法从电子表格中获取图表
- jquery - jQuery - 基于其他属性值获取元素属性
- javascript - CKEDITOR 和 KCFINDER 上传工作,图像缩略图浏览失败
- bash - 当对开头进行查找和替换时,如何在行尾添加字符?
- gnuplot - Gnuplotting CPU 负载和 %CPU
- javascript - 无法使用 [ngStyle] 渲染从 API 接收的样式
- docker - 在 gitlab-ci 的 docker executor 中添加到 /etc/hosts
- laravel - PHPUnit:将文件内容发布到端点
- ios - 目标C中具有撤消功能的多重操作