這工作的結果:如何 「應用」 到一個無參數的功能
List(3, 1, 2).sorted apply 1
res1: Int = 2
而且這個工程:
var x = List(3, 1, 2).sorted
x: List[Int] = List(1, 2, 3)
x(1)
res2: Int = 2
但這並不:
List(3, 1, 2).sorted (1)
error: type mismatch;
found : Int(1)
required: Ordering[?]
List(3, 1, 2).sorted (1)
^
即使括號也不能解釋我想要的解析器:
(List(3, 1, 2).sorted)(1)
error: type mismatch;
found : Int(1)
required: Ordering[?]
(List(3, 1, 2).sorted)(1)
這似乎是一個自然的表達。我究竟做錯了什麼?
`sorted`不是無參數:它需要一個隱式參數,您可以忽略它。這就是問題所在 - 你的(1)被解釋爲「sorted」的顯式參數,而不是其返回值的apply方法的參數,如在「List(1,2,3).tail(0)」中那樣工作正常。不幸的是,我不知道是否有任何解決方案。 – 2011-01-22 17:30:52
你試過`List(3,1,2).sorted()(1)`? – Madoc 2011-01-22 18:30:11
@Madoc:這不起作用,你不能通過提供一個空的參數列表來省略隱含的內容,編譯器會抱怨未指定的參數。 – 2011-01-22 19:00:24