PartialFunction[A, B]
과 같이 구체적인 함수 (예 : (A) => B
)의 빠른 함수를 사용할 수 있습니까?콘크리트 스칼라 부분 함수들
(a: A) => a match { case obj => func(obj) }
암시 적 변환이 어디 있습니까 같은 : 내가 아는 가장 간결한 구문은
implicit def funcAsPartial[A, B](func: A => B) = new PartialFunction[A, B] {
def isDefinedAt(a: A) = true
def apply(a: A) = func(a)
}
난 그냥 내가 찾던 쓴 생각하지만, 이것은 이미 존재 스칼라 라이브러리?
감사합니다. Function1이 전체 도메인에서 정의된다는 암시가있었습니다. –
@AaronNovstrup : PartialFunction의 계약에 대한 설명은 의미가 있지만 ScalaDocs에 반영되지 않았습니다 (최소 2.9.1까지). 'PartialFunction'의 ScalaDocs는 다음과 같이 주장합니다. "PartialFunction [A, B] 유형의 부분 함수는 도메인이 반드시 모든 유형의 'A' 값을 포함하지는 않는 단항 함수입니다." 더욱이, 그들은 정의 된 곳 어디에서나 f를 호출하는 것이 안전하다고 (어떤 의미로)'PartialFunction' 리터럴'{case 0 => 1/0}'에 의해 행해진 것처럼 위반하기 쉽습니다. 어디서 정보를 얻었습니까? 버그 신고서를 제출해야합니까? – Blaisorblade
@ 블레어 블레이드 나는 스칼라를 배웠을 때 메일 링리스트에서이 설명을 읽었다 고 생각한다. (나는 그동안 스칼라를 배웠다.) 나는이 대답을 쓸 때 어떤 문서도보고 있지 않았다. 그리고 예,이 계약을 위반하는 것이 쉽습니다 (예 : catch 블록에서 예외를 감싸거나 재발행하는 것). 진정한 요점은 PartialFunctions가 도메인을 정의하지만 일반 함수는 그렇지 않다는 것입니다 (실제로 의미하는 바가 일부 있음). –