Scala def 괄호 여부의 차이
스칼라에서 argument가 하나도 없는 메소드를 정의할 때엔 괄호를 붙일 수도 있고 안 붙일 수도 있음
괄호를 붙일 때
예제 코드
괄호를 안 붙일 때
예제 코드
차이점
코드 실행 결과
괄호를 붙인 경우엔 두개 다 정상 작동
괄호를 안 붙인 경우에는 testFunction()에서 에러가 나온다
이유
괄호 없이 정의한 함수를 호출하면 사실 괄호까지 가기 전에 이미 호출된 상황임
그리고 돌아온 Unit에다가 () argument를 대입하려고 하니 에러가 나는 것
반대로 괄호를 붙여 정의한 함수를 괄호 없이 호출하면 문제없이 동작하지만 괄호를 들어갔다 빠져나오는 동작이 하나 더 추가됨
그렇기 때문에 함수에 사이드 이펙트가 없고 상태를 변경하지 않는다면 괄호 없이 정의하는 것이 나음
괄호 없이 함수를 정의하면 Field처럼 쓰일 수도 있기 때문에 요주의
Last updated