方法的多个信号

时间:2019-08-05 05:47:49

标签: sorbet

我正在尝试为promise.rb gem添加类型。具体来说,我的目标是为Promise.all静态方法创建一个体面的定义。

从本质上讲,它是从[Promise[A], Promise[B]]Promise[[A, B]]的数组上的平面图。

我有一个有效的签名,用于一个,我想用硬编码一些不同的金额(例如最多10个),因为我认为有一种自动执行此操作的好方法。

据我所知,我只能在我已经尝试过的方法定义上方放一串信号。

sig看起来像这样(在rbi中-没有实现):

  sig do
    type_parameters(:A)
      .params(enum: [
        Promise[T.type_parameter(:A)], 
      ])
      .returns(Promise[[
        T.type_parameter(:A),
      ]])
  end
  def self.all(enum); end

对于两个项目,它看起来像这样:

  sig do
    type_parameters(:A, :B)
      .params(enum: [
        Promise[T.type_parameter(:A)], 
        Promise[T.type_parameter(:B)],
      ])
      .returns(Promise[[
        T.type_parameter(:A),
        T.type_parameter(:B),
      ]])
  end
  def self.all(enum); end

有没有办法使这项工作有效?

0 个答案:

没有答案