2014-07-17 3 views
3

저는 스칼라를 배우기 시작했으며 다음 두 가지 정의를 주목했습니다. 내가 뭔가를 반환하는 경우에도 첫 번째 함수는 항상> 지능 = 같은 단위 처리됩니다 것으로 나타났습니다 a(2)스칼라에서 자유 함수 정의와 같음

def a(m:Int){ 
    println("-" * m) 
}           //> a: (m: Int)Unit 

그리고 =

def a(m:Int) = { 
    println("-" * m) 
}           //> a: (m: Int)Unit 

와 모두

을 사용하여 호출 할 수 있습니다.

질문 :이 두 정의는 내부적으로 어떻게 다른가요?

(이 바보가 될 수도 있지만 나는이 구글 방법을 모르는) 그런 다음 반환 형식이 Unit는 항상, 등호를두면

답변

6

합니다. 등호를 사용하면 리턴 유형이 다른 것일 수 있습니다.

동등한 버전을 "프로 시저"구문이라고합니다 (프로 시저는 일부 값을 계산하는식이 아닌 일부 작업을 수행하는 함수입니다). 그러나이 구문의 사용은 현재 권장되지 않으며 향후 허용되지 않습니다. https://issues.scala-lang.org/browse/SI-7605을 참조하십시오.

관련 문제