从C#角度看Scala泛型——更高级的类型?

从C#角度看Scala泛型——更高级的类型?,scala,Scala,愚蠢的问题 我正在用C#泛型写一些东西,感觉好像我发现了一个短消息,在Scala中使用更高级的类型可能会克服它,我只是对它略为熟悉 代码如下: public void Subscribe<P, T>(Action<T> callback) where P : ISubscriberProvider<T> public void Subscribe(操作回调),其中P:ISubscriberProvider (提供商可能是一个不好的术语……我认为它可能真的是

愚蠢的问题

我正在用C#泛型写一些东西,感觉好像我发现了一个短消息,在Scala中使用更高级的类型可能会克服它,我只是对它略为熟悉

代码如下:

public void Subscribe<P, T>(Action<T> callback) where P : ISubscriberProvider<T>
public void Subscribe(操作回调),其中P:ISubscriberProvider
(提供商可能是一个不好的术语……我认为它可能真的是一个工厂)

所以问题是我必须在签名中同时提供p和T。相反,我想要的是:

public void Subscribe<P<T>>(Action<T> callback) where P : ISubscriberProvider<T>
public void Subscribe(操作回调),其中P:ISubscriberProvider
这不是有效的语法

这能在Scala中生效吗

多谢

我不知道C,但看起来像

def subscribe[T, P <: SubscriberProvider[T]](fun: T => Unit): Unit
def订阅[T,P单位):单位
但是类型
p
在参数或返回类型中的任何地方都没有使用,所以不确定您可以使用它。

我不知道C,但它看起来像

def subscribe[T, P <: SubscriberProvider[T]](fun: T => Unit): Unit
def订阅[T,P单位):单位

但是类型
p
没有在参数或返回类型中的任何地方使用,因此不确定您可以使用它。

我不知道您试图做什么。告诉我们您在哪里调用此方法。另外,您可能希望查看
未来的
对象,或者
Akka actors
检查此t线程-。它可能会帮助您了解更高种类的基本内容。我不知道您在尝试做什么。告诉我们您在哪里调用此方法。此外,您可能希望查看
未来的
对象,或者
Akka actors
检查此线程-,而不是传递回调。它可能会帮助您了解更高种类的对象基本上是关于。