2013-10-18 7 views
0

병합 된 시퀀스에 요소가 정렬되도록 스칼라에서 두 개의 날짜 시퀀스를 병합하려고합니다. 다음과 같이 나는 isBefore의 부분적인 구현을 사용하고 있습니다 :부분적으로 스칼라의 isBefore 함수가 오류를 발생합니다.

val seq1 = Seq(LocalDate.of(2014, 4, 5), LocalDate.of(2013, 6 ,7), LocalDate.of(2014, 3, 1)) 
    val seq2 = Seq(LocalDate.of(2012, 2, 2), LocalDate.of(2015, 2, 1)) 
    var arr = (seq1 ++ seq2).sortWith(_.isBefore(_) = 1) 
    println(arr) 

을하지만 그것은 isBefore 기능에 대한 컴파일 오류를 보여줍니다

Multiple markers at this line 
- missing arguments for method isBefore in class LocalDate; follow this method with `_' if you want to 
treat it as a partially applied function 
- missing arguments for method isBefore in class LocalDate; follow this method with `_' if you want to 
treat it as a partially applied function 

내가 스칼라 비교적 새로운입니다. 무슨 문제가있는 것 같습니까?

답변

0

처음에는 부분 구현과 같은 용어가 없습니다. 적어도 들어 보지 못했지만, 부분 적용이 의도 된 것 같습니다.이 경우 부분 적용은 없으며, 부분 적용은 카레 함수에 관한 것입니다. 어떤 오류 메시지가 오류 메시지에서 알려주려고하는지 알려줍니다. 이 실시 예는 :

def test(a: String)(f: String => String) = f(a) 

val onString = test("hello world") _ 

onString(_.capitalize) 

test: (a: String)(f: String => String)String 
onString: (String => String) => String = <function1> 
res8: String = Hello world 

이것은 일부 애플리케이션이며, 다른 함수를 반환하고 하나 개 인수 전달 (부분적으로 적용)과 후자의 다른 인자를 전달하는 카레 기능을 수행.

문제를 정렬하는 데는 문제가 없습니다. 나는 어떤 라이브러리를 사용하고 있는지는 알지 못하지만 날짜 시간은 비슷합니다. 나는 문제가 할당 (_.isBefore(_) = 1)에있는 것 같아, 이것은 불법입니다. 다음과 같아야합니다.

val seq1 = Seq(LocalDate.parse("2014-04-05"), LocalDate.parse("2013-06-07"), LocalDate.parse("2014-03-01")) 
val seq2 = Seq(LocalDate.parse("2012-02-02"), LocalDate.parse("2015-02-01")) 
var arr = (seq1 ++ seq2).sortWith(_.isBefore(_)) 

arr: Seq[org.joda.time.LocalDate] = List(2012-02-02, 2013-06-07, 2014-03-01, 2014-04-05, 2015-02-01) 
관련 문제