srb使用class << object访问对象单例类触发3001错误的解决方法咨询
Sorbet
3001 报错抑制方案 报错本质
- 该报错属于Sorbet语法解析阶段的拦截逻辑,运行时机早于类型检查流程,因此用于类型逃逸的
T.unsafe无法对其生效,这也是之前尝试包裹表达式没有效果的原因。
具体操作
- 对触发报错的代码行添加精准行内忽略注释,即可仅抑制该条
3001报错,不影响其他检查:
写法1(注释置于代码上方):
写法2(注释置于代码行尾):# sorbet:ignore[3001] singleton = (class << object; self; end)singleton = (class << object; self; end) # sorbet:ignore[3001] - 若文件内存在多处同类不兼容语法,可在文件头部添加全局忽略声明:
该声明会忽略整个文件内的同类报错,建议仅在确认无其他误判场景下使用。# sorbet:ignore[3001]
补充说明
- 这类被Sorbet语法规则排除的表达式,返回值会被推导为
T.untyped类型,不会对后续代码的类型检查造成额外阻断。 - 忽略注释仅指定
3001错误代码,不会干扰其他语法、类型类别的报错正常检出。
内容的提问来源于stack exchange,提问作者Jochen
相关产品推荐
相关产品推荐

