这有效:
List(3, 1, 2).sorted apply 1
res1: Int = 2
Run Code Online (Sandbox Code Playgroud)
这有效:
var x = List(3, 1, 2).sorted
x: List[Int] = List(1, 2, 3)
x(1)
res2: Int = 2
Run Code Online (Sandbox Code Playgroud)
但这不是:
List(3, 1, 2).sorted (1)
error: type mismatch;
found : Int(1)
required: Ordering[?]
List(3, 1, 2).sorted (1)
^
Run Code Online (Sandbox Code Playgroud)
甚至括号也不能解析解析器到我想要的东西:
(List(3, 1, 2).sorted)(1)
error: type mismatch;
found : Int(1)
required: Ordering[?]
(List(3, 1, 2).sorted)(1)
Run Code Online (Sandbox Code Playgroud)
这似乎是一种自然的表达.我究竟做错了什么?
这有效:
(Listed(3, 1, 2).sorted _)(1),
但我不确定使用它是否比使用起来更方便:
Listed(3, 1, 2).sorted apply 1.
无论如何我会选择后者.
我认为你必须保留申请.原因是排序不是 "无参数",它被定义为
def sorted [B >: A] (implicit ord: Ordering[B]) : List[A]
Run Code Online (Sandbox Code Playgroud)
由于这是一个隐式参数,Ordering [Int]通常是自动提供的,但是如果你使用parens,编译器会认为你想要指定另一个Ordering [Int](让我们说倒退).
| 归档时间: |
|
| 查看次数: |
290 次 |
| 最近记录: |