如何指定类型参数

Tem*_*kov 2 ruby sorbet

如何使用冰糕指定类型参数?

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

def build_array(value) 
  [value]
end
Run Code Online (Sandbox Code Playgroud)

输出类型取决于输入类型:

build_array(42) #=> return Array[Integer]
build_array('42') #=> return Array[String]
Run Code Online (Sandbox Code Playgroud)

小智 5

您可以使用type_parameters以下方法完成此操作:

# 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]
Run Code Online (Sandbox Code Playgroud)

这是带有上述代码sorbet.run 链接