문제

첫 번째 샘플 스칼라 프로그램을 작성했는데 다음과 같이 보입니다.

def main(args: Array[String]) {     
    def f1 = println("aprintln")
    println("applying f1")
    println((f1 _).apply)
    println("done applying f1")
}

출력은입니다

applying f1
aprintln
()
done applying f1

누군가가 추가 ()가 나타나는 이유를 설명 할 수 있습니까? 나는 단지 Aprintln이 나타날 것이라고 생각했다.

감사해요,

제프

도움이 되었습니까?

해결책

문제가 해결됩니다.

def main(args: Array[String]) {         
    def f1 = println("aprintln")
    println("applying f1")
    (f1 _).apply
    println("done applying f1")
}

그리고 이것도 마찬가지입니다.

def main(args: Array[String]) {         
    def f1 = "aprintln"
    println("applying f1")
    println((f1 _).apply)
    println("done applying f1")
}

여기서 일어나는 일은 기능을 실행하고 있다는 것입니다. f1 전화로 apply. 함수 f1 'aprintln'을 인쇄하고 돌아옵니다 (). 그런 다음 출력을 전달합니다 f1, 그것은 (), 또 다른 전화로 println. 그렇기 때문에 콘솔에 추가 파란이 있습니다.

빈 괄호는 Scala의 유형 단위를 가지고 있으며, 이는 Java의 무효와 동일합니다.

다른 팁

Java에서 무효 리턴 유형을 갖는 방법은 스칼라에 반환 유형의 장치가 있습니다. ()는 단위의 가치를 쓰는 방법입니다.

코드에서 f1은 println을 직접 호출합니다. 따라서 F1을 호출하고 결과를 println에 전달하면 F1 본문에 문자열을 인쇄하고 결과를 인쇄합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top