在许多其他语言中,可以创建一个通用的异步可迭代类型,例如Rx变体中的Observable<T>
,Go中的chan T
。
Julia的协程抽象Task
是一个类似的构造,可以在(轻量级)线程之间传递对象。 Julia有一个方法来注释这些对象的类型吗?
我想创建一个接受Task
作为参数的函数,并能够表达任务发出的对象类型。例如,如果Task
是泛型类型,我会想:
function foo(socket::Task{String})
for word in socket
println(word)
end
end
更一般地说,是否存在可使用for
(或使用start
/ next
/ done
的其他方法)进行迭代的对象的抽象类型,以便我可以进行注释在功能签名?