-
Notifications
You must be signed in to change notification settings - Fork 7
rosd89 edited this page Aug 22, 2016
·
1 revision
#3.1 연산자 오버로딩?
1 + 2
- 위의 코드에서의 덧셈기호는 메서드
- 스칼라에서는 대부분의 연산자가 실제로는 메서드
- 스칼라에서는 인자가 하나뿐인 메서드의 경우 중위표기법에서 마침표와 괄호를 생략가능 -
1.+(2)
=>1 + 2
1 toString
- 인자가 없는 메서드는 항상 마침표 없이 호출 가능
- 이를 후위 표기법이라 하는데 혼란을 일으킬 수 있어 스칼라 2.10은 이를 선택적인 기능으로 만듬
- 후위 표기법을 사용하고 싶다고 컴파일러에 명시하지 않고 빌드 할 경우 경고를 표시하도록 SBT를 설정
import scala.language.postfixOps
-language:postfixOps
를 지정해서 컴파일러가 이 기능을 항상 활성화하도록 함임포트를 사용하면 코드를 읽는 사람에게 내가 사용중인 선택적 기능들을 상기시키는 효과가 있어 컴파일 시 모호성이 생기지 않고 사람들을 혼동시키지 않음
- 스칼라에서는 출력 가능한 아스키 문자를 혀용
-
( )
,{ }
,[ ]
와 구분자 문자인 `, ', ", ;과 ,는 제외한 나머지 문자는 사용가능 -
val abc_+~!@#%^&:<>?*= = 1
같은 형태도 가능 - 예약어는 식별자로 사용 할 수 없음 - ex)
_
val xyz_++= = 1 // 컴파일 O
val xyz++= = 1 // 컴파일 X
- 컴파일시 xyz 뒤에 무언가를 덧붙이는
xyz ++=
로 해석될 수 있기 때문에 컴파일시 실패함 - 식별자가 연산자로 시작되는 경우 모두 연산자로 표기
`test that addition works` = assert(1 + 1 == 2)
- `사이에 위치한 밍의의 문자열을 식별자로 사용가능
- 패턴매칭 식별자는 소문자로 시작하는 토큰은 변수, 대문자로 시작하는 토큰은 타입으로 인식
#3.1.1 편의구문
- 연산자가 메서드라는 사실을 알고 나면 새로운 수 타입을 제공하는 수학 라이브러리를 만드는게 가능
- 단 기호 연산자를 과도하게 사용하면 코드에서 '행 내부 잡음'이 늘어나 가독성을 해침