필자는 최근에 스칼라 삼항 연산자의 구현을 특히 많이 활성화/비활성화 된 이미지를 토글하는 데 사용했습니다. 그러나 일반적으로 찾은 코드 스 니펫을 이해할 수는 있지만 혼란 스럽습니다. 나는 또한 나의 필요에 더 잘 적응할 수 있도록 약간 수정하려고한다. 내가 다른 블록 등 자세한 경우 연산자 - 흉내 문법을 좋아해요.이 삼항 연산자의 구현은 어떻게 작동합니까?
implicit def BooleanBool(b: Boolean): Bool = Bool(b)
case class Bool(b: Boolean) {
def ?[X](t: => X) = new {
def |(f: => X) = if (b) t else f
}
}
그래서 나는 암시 적으로 Bool 개체를 생성 이해하십니까? 함수로서. 이 함수는 X 유형의 값을 반환해야합니다. 나머지는 이해하기 위해 고생합니다. Heres는
내 질문 :
- 중첩 된 함수 작업을 수행하는 방법? | 기능.
- 코드가 실제로 처리하는 순서는 무엇입니까?
- 다른 절이 없도록 옵션을 변경하려면 어떻게해야합니까? 예. SkyBlue()입니까? goOutside()
중첩 삼항 연산자 예에 단점이 있습니까 :
isTheSkyBlue() ? goOutside() | { isTheInternetOn() ? playVideoGame() | read() }
- 둥지은 case 문처럼 동작하도록 변경 될 수 있습니다가. 즉, => 연산자 또는 유사 연산자를 사용합니다. 예.
isTheSkyBlue() ? goOutside() | => isTheInternetOn() ? playVideoGame() | read()
심지어는 1과 2에 대답하기 위해 함께
isTheSkyBlue() ? goOutside() | isTheInternetOn() ? playVideoGame() | read()
새로운 {...}이 (가) 함수 "or"가있는 익명 객체를 만드는 이유는 무엇입니까? 그 다음 부울에 따라 t 또는 f를 평가합니까? 나는 그것을 훨씬 더 잘 이해했다. –