2013-04-20 69 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})