You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Sorbet中能否将对象返回类型用作其他对象的参数/变量类型?

在Sorbet中复用方法返回类型作为变量类型注解的方案

可以实现复用CSV.parse的返回类型,不用手动复制冗长的T.any(CSV::Table, T::Array[T::Array[T.untyped]])类型注解,以下是几种可行的方式:

1. 直接使用T.type_of获取方法返回类型

通过T.type_of(CSV.parse(T.anything))可以直接拿到CSV.parse的返回类型,其中T.anything是Sorbet提供的万能占位符,仅用于推导方法的类型签名,不需要传入实际有效参数:

csv_text = T.let(File.read(csv_address), String)
@csv = T.let(CSV.parse(csv_text), T.type_of(CSV.parse(T.anything)))

2. 定义类型别名复用

如果这个返回类型需要在多处使用,可以提前定义一个类型别名,后续直接引用即可:

# 定义类型别名,复用CSV.parse的返回类型
CSVParseResult = T.type_of(CSV.parse(T.anything))

# 实际使用
csv_text = T.let(File.read(csv_address), String)
@csv = T.let(CSV.parse(csv_text), CSVParseResult)

注意事项

  • 你示例中写的CSV.parse.return_sig不是Sorbet支持的语法,无法直接通过这种方式获取方法的返回签名,必须借助T.type_of来实现。
  • 对于局部变量,Sorbet通常可以自动推断类型,但实例变量(如@csv)因为作用域特性,需要显式通过T.let标注类型,上述方法正好解决了手动复制类型的繁琐问题。

内容的提问来源于stack exchange,提问作者Peter Nixey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 10:05:20