【发布时间】:2019-08-02 19:09:11
【问题描述】:
如何为下面的archive_all函数写签名?
# typed: true
extend T::Sig
module Archivable
def archive
end
end
class Book
extend Archivable
end
class Magazine
extend Archivable
end
sig {params(klass: T.class_of(Archivable)).void}
def archive_all(klass)
klass.archive
end
archive_all(Book)
archive_all(Magazine)
冰糕错误:
editor.rb:17: Method archive does not exist on T.class_of(Archivable) https://srb.help/7003
17 | klass.archive
^^^^^^^^^^^^^
editor.rb:5: Did you mean: Archivable#archive?
5 | def archive
^^^^^^^^^^^
【问题讨论】:
-
除非我严重误解了 Sorbet 的工作原理,否则我会假定
class_of(Archivable)是Module,而且并非所有Module的实例都有一个名为archive的方法。