2023 02 02
2023-02-02¶
Scala 기초 투어¶
Operator¶
- 개요
- 오퍼레이터는 싹다 메서드여
- 10 + 1 => 10.+(1)
- 만들어보기
case class Vec(x: Double, y: Double) { def +(that: Vec) = Vec(this.x + that.x, this.y + that.y) } val vec1 = Vec(1.0, 1.0) val vec2 = Vec(2.0, 2.0) val vec3 = vec1 + vec2 // (3.0, 3.0)- and/or 등과 같은 메서드도 구현 가능하겠지?
- 연산자 우선 순위
- 있다는거만 기억해두자
By-name Parameter¶
- 개요
- 실사용될 때마다 평가되는 파라미터
- by-value parameter와 대조되는 기능
- 파라미터 타입 앞에
=>를 붙이면 됨
- vs By-Value Parameter
- [By-Name]
- 필요할 때만 평가
- 여러번 쓰이면 필요에 따라 여러번 평가
- [By-Value]
- 필요하지 않더라도 먼저 평가
- 딱 한번만 평가
- [By-Name]
- 예시
어노테이션¶
- 개요
- 정의와 주석
- 컴파일 경고
@deprecated
- 규칙에 알맞는 코드인지 검사
@tailrec: 마지막 리턴이 본인 함수인지
- 코드를 만들어주는 어노테이션
@inline: 실제 메서드 본문의 내용을 호출할때 바이트코드 넣어줌 (최적화)
- 자바 어노테이션도 가능
패키지와 임포트¶
- 패키지
- 자바랑 똑같음
- 임포트
- 다른 패키지 코드 접근시 사용
- 진짜 써야하는 곳에 (그니까 최상단 아니여도) 가져오게 할 수도 있음
java.lang,object Predef기본으로 임포트 되어있음
Top Level Definitions in packages¶
- 패키지 자체에서 공유할 수 있는 변수/함수