일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Play2 로 웹 개발
- 하이퍼레저 패브릭
- 안드로이드 웹뷰
- 하이브리드앱
- Adapter 패턴
- play 강좌
- 파이썬 데이터분석
- 파이썬 머신러닝
- 스칼라 동시성
- 스위프트
- 파이썬 동시성
- 주키퍼
- Akka
- 블록체인
- Actor
- 스칼라
- akka 강좌
- Golang
- Play2
- 그라파나
- 파이썬
- 파이썬 강좌
- play2 강좌
- hyperledger fabric
- CORDA
- 플레이프레임워크
- Hyperledger fabric gossip protocol
- 이더리움
- 스칼라 강좌
- 엔터프라이즈 블록체인
- Today
- Total
HAMA 블로그
스칼라 강좌 (2) - Array 본문
이 시리즈는 스칼라언어의 창시자인 마틴 오더스키가 직접 저술한 Programming in Scala (2판)
을 참고로 하여 정리할 예정입니다. 잘못된 점이 있으면 지적해주시면 바로 수정하겠습니다
Array
요렇게 넣으면 됩니다.
여기서 눈여겨 볼것은 일단 val 로 선언했는데 값을 바꾼겁니다. 이건 전에 얘기했다시피 변수를 재 할당 할 수 없는거지, 변수가 가르키는 객체 안의 내용은 여전히 변경가능하다는거죠.
- 자바에서는 String a[] = new String[2] 이렇게 만듭니다.
- 코틀린에서는
var array1 : Array<String?> = emptyArray()
var array2: Array<String?> = arrayOfNulls(4)
var array3 = arrayOf<String>("Mashroom", "Kitkat", "Oreo", "Lolipop")
var array4 = Array(2, {""}))
자 그럼 값을 출력해볼까요?
값 가져오기
print(a(0))
이렇게 하면 값을 꺼내와서 출력에 사용합니다.
() 를 통해서 접근했는데요. 어떻게 가능 할까요??
스칼라에서는 변수 뒤에 하나 이상의 값을 괄호로 둘러싸서 호출하면
그 변수의 apply() 메소드를 호출하는것으로 바꾸어줍니다.
즉 a.apply(0) 이렇게 변경된다는거죠.
a(0) 는 a.apply(0) 입니다. 배열객체에서 apply 는 해당 인덱스에 해당하는 값을 꺼내오는 겁니다.
이런 apply 는 배열객체에만 있는건 아닙니다.
값 넣기
그럼 값을 짚어넣는건 어떻게 된걸까요?
a(0) = "hello"
이거 말입니다. 이것도 역시 생략된것인데요.
괄호로 둘러싼 인자들이 있는 표현식에 할당이 되면 컴파일러는
a.update(0, 'hello') 이렇게 바꾸어줍니다.
즉 값을 가져오거나 넣을때 사용하는 () 는 좀 편하게 쓰라고 스칼라 창시자가 만든 장치입니다.
실상은 메소드 호출이란 야그죠.
배열을 만드는 더 간편한 방법
val a = Array("hello", "world")
이렇게 만들 수 있습니다.
new 도 생략되었고 [String] 도 생략되었습니다.
[String] 생략
초기화할때 인자로 String 이 들어가기때문에 타입을 추론한겁니다.
new 생략
암시적으로 apply 라는 이름의 팩토리 메소드를 호출해서 객체를 만들어줍니다.
Array.apply("hello", "world") 원랜 이런거란거죠.
스칼라 창시자는 참 별걸 다 신경써서 만들어 주네요.
마침.
위에서 보면 값을 할당하고 그러잖아요? 네 Array 는 변경가능합니다. 변경 불가능 한것도 있다고 하네요.
스칼라 언어는 변수의 값을 변경 할 수 있냐? 없냐를 매우 중요하게 생각하는거 같습니다.
'Scala' 카테고리의 다른 글
스칼라 강좌 (6) - Map (0) | 2016.06.20 |
---|---|
스칼라 강좌 (5) - Set (0) | 2016.06.19 |
스칼라 강좌 (4) - Tuple (0) | 2016.06.19 |
스칼라 강좌 (3) - List (0) | 2016.06.15 |
스칼라 강좌 (1 ) - 소개 (0) | 2016.06.13 |