The*_*ius 10 scala type-parameter
特质Map[A,+B]有一种方法
def minBy [B] (f: ((A, B)) ? B)(implicit cmp: Ordering[B]): (A, B)
Run Code Online (Sandbox Code Playgroud)
我期望B特性与方法中的特性相同,但后来我仍然无法理解:
val m2 = Map('a -> "1", 'b ->"2" ,'c ->"3")
m2.minBy((t:(Symbol,String))=>Integer.parseInt(t._2))
Run Code Online (Sandbox Code Playgroud)
这里B的Map[A,+B]就是String,不过B的minBy就是Int-或犯错吗?
所以我期望该方法的类型是相当的
def minBy [C] (f: ((A, B)) ? C)(implicit cmp: Ordering[C]): (A, B)
Run Code Online (Sandbox Code Playgroud)
但这不是消息来源所说的.
如果两者都不同,我应该知道哪里?如果他们不是 - 你能发现并指出我的错误吗?
您的分析是正确的,它应该重命名为C,或其他.问题是scaladoc只是用一个元组(A,B)替换TraversableLike定义中的A,因为它是一个映射.这是TraversableLike的定义:
def minBy [B] (f: (A) ? B)(implicit cmp: Ordering[B]): A
Run Code Online (Sandbox Code Playgroud)
因为它是一张地图,scaladoc用元组(A,B)替换(A).
def minBy [B] (f: (A, B) ? B)(implicit cmp: Ordering[B]): (A, B)
Run Code Online (Sandbox Code Playgroud)
如你所见,实际上并不是正确的签名.
这是一个已知问题,scaladoc不会消除同名类型参数之间的歧义.投票或提交补丁!
| 归档时间: |
|
| 查看次数: |
623 次 |
| 最近记录: |