0
기존 추출기를 다시 사용하여 작성하고 싶습니다. A => Option[B]
은 B => Option[C]
과 완벽하게 일치합니다.메소드 인수로 임의 추출기를 사용할 수 있습니까?
하지만 혼란 스럽습니다. 어떻게 코드에서 그러한 관계를 표현할 수 있습니까?
확실한 방법
이 좋은 이유를 사용할 수 없습니다 :type Extractor[F,T] = {
def unapply(from : F) : Option[T]
}
def bind[A,B,C](l : Extractor[A,B], r : Extractor[B,C]) = new {
def unapply(from : A) : Option[C] = l.unapply(from).flatMap(r.unapply _)
}
scalac 응답 :
Extractors.scala:7: error: Parameter type in structural refinement may not refer to an abstract type defined outside that refinement
def unapply(from : A) : Option[C] = l.unapply(from).flatMap(r.unapply _)
^
Extractors.scala:3: error: Parameter type in structural refinement may not refer to an abstract type defined outside that refinement
def unapply(from : F) : Option[T]
^
two errors found
인터넷이 때문에 형의 삭제에 예상되는 동작 말한다.
제대로 작동하도록 코드를 다시 말 할 수 있습니까? structure type
외부에 정의 generic type
을 참조 할 수에 대한 에러가 불러 구조적 정제에
그리고 어떻게'Extractor' 새로 정의 된 유형 예를 들어 정규식 추출기 일치 수 있을까? – ayvango
@ayvango 정규식 추출기를 붙여 넣을 수 있습니까? – chengpohi
'val date = "" "(\ d \ d \ d) - (\ d \ d)" "". r 미리 정의 된 다른 추출기가 있습니다. 그리고 나는 그들을 재사용하고 싶다. – ayvango