Ruby 如何指定类型参数

Ruby 如何指定类型参数,ruby,sorbet,Ruby,Sorbet,如何使用sorbet指定类型参数 例如,我想用返回泛型类型T[a]的a类型的参数来注释一个方法 def build_数组(值) [价值] 结束 输出类型取决于输入类型: build_数组(42)#=>返回数组[整数] 构建数组('42')#=>返回数组[字符串] 您可以尝试对方法定义使用泛型 例如: 参见中的示例,您可以使用类型参数完成此操作: # typed: true extend T::Sig sig do type_parameters(:T) .params(value:

如何使用sorbet指定类型参数

例如,我想用返回泛型类型
T[a]
a
类型的参数来注释一个方法

def build_数组(值)
[价值]
结束
输出类型取决于输入类型:

build_数组(42)#=>返回数组[整数]
构建数组('42')#=>返回数组[字符串]

您可以尝试对方法定义使用泛型

例如:


参见

中的示例,您可以使用
类型参数
完成此操作:

# typed: true
extend T::Sig

sig do
  type_parameters(:T)
  .params(value: T.type_parameter(:T))
  .returns(T::Array[T.type_parameter(:T)])
end
def build_array(value) 
  [value]
end

x = build_array(5)
T.reveal_type(build_array(42))   # T::Array[Integer]
T.reveal_type(build_array('42')) # T::Array[String]

这是一本。

谢谢!更新@aysamanra通过工作示例提供了更好的答案。工藤对他说。
# typed: true
extend T::Sig

sig do
  type_parameters(:T)
  .params(value: T.type_parameter(:T))
  .returns(T::Array[T.type_parameter(:T)])
end
def build_array(value) 
  [value]
end

x = build_array(5)
T.reveal_type(build_array(42))   # T::Array[Integer]
T.reveal_type(build_array('42')) # T::Array[String]