스칼라에 논리적 의미를 구현할 가능성이 있는지 궁금합니다. 예를 들어 :스칼라에서 암시 논리 연산자 구현
a implies b
로 번역 :
!a || b
곳 a
및 b
는 Boolean
으로 평가 약간의 표현입니다.
나는 처음에 다음과 같이 시작하지만 a
의 값에 상관없이 모두 a
및 b
을 평가하기 때문에 그것은 잘못된 접근 방식
implicit def extendedBoolean(a : Boolean) = new {
def implies(b : Boolean) = {
!a || b
}
}
입니다. 정확한 해결책은 a
이 참일 때 b
만을 평가할 것입니다.
* null 함수 *는 스칼라에서 * call-by-name 인수 *라고합니다. – ziggystar
참. 내가 링크 된 Scala 웹 사이트의 페이지에서 설명하는 것처럼, "소위 _ 이름 별 평가"는 표현식을 nullary 함수로 자동 변환하여 스칼라에서 구현됩니다._how_ 스칼라가 언어 기능을 구현하는 것이 더 흥미롭고 교육적이라고 생각합니다. 스칼라는 이름을 어떻게 사용하는지주의하는 것보다 언어 기능을 구현합니다. – ellisbben
이 이름이 call-by-name 인 경우를 강조하기 위해 편집 됨 – ellisbben