2013-04-20 75 views
0

根據docList.sortWith方法:有簽名模式匹配是否創建函數?

def sortWith(lt: (A, A) ⇒ Boolean): List[A] 

現在對於字符串列表,我們可以這樣做:當Scala是說

myList.sortWith((_,_) match { case(s1: String, s2: String) => s1.compareTo(s2)} 

即使用模式匹配就是了函數類型。

在這種情況下,我們可以因此說,

(_,_) match { case(s1: String, s2: String) => s1.compareTo(s2) 

是下面的函數類型(A, A) ⇒ Boolean的功能應用?

+1

有沒有問題? – 2013-04-20 23:53:35

+0

你可以把它寫成一個部分函數:'val f:(String,String)=> Boolean = {case(s1,s2)=>(s1 compareTo s2)> 0}' – EECOLOR 2013-04-21 01:34:00

回答

2

請注意compareTo返回一個整數。如果你想遵守簽字(A, A) ⇒ Boolean,按字母順序升序,你可以使用<

所有這些匿名函數三會排序List

myList.sortWith(_ < _) 
myList.sortWith { case(a, b) => a < b } 
myList.sortWith((_, _) match { case (a, b) => a < b})