Skip to content
rosd89 edited this page Aug 22, 2016 · 1 revision

#3.1 연산자 오버로딩?

연산자

1 + 2
  • 위의 코드에서의 덧셈기호는 메서드
  • 스칼라에서는 대부분의 연산자가 실제로는 메서드
  • 스칼라에서는 인자가 하나뿐인 메서드의 경우 중위표기법에서 마침표와 괄호를 생략가능 - 1.+(2) => 1 + 2
1 toString
  • 인자가 없는 메서드는 항상 마침표 없이 호출 가능
  • 이를 후위 표기법이라 하는데 혼란을 일으킬 수 있어 스칼라 2.10은 이를 선택적인 기능으로 만듬
  • 후위 표기법을 사용하고 싶다고 컴파일러에 명시하지 않고 빌드 할 경우 경고를 표시하도록 SBT를 설정
후위표기법을 사용하기 위한 두가지 방법
  1. import scala.language.postfixOps
  2. -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 편의구문

  • 연산자가 메서드라는 사실을 알고 나면 새로운 수 타입을 제공하는 수학 라이브러리를 만드는게 가능
  • 단 기호 연산자를 과도하게 사용하면 코드에서 '행 내부 잡음'이 늘어나 가독성을 해침
Clone this wiki locally