클래스와 객체 클래스,필드,메소드 객체 생성 클래스는 객체의 청사진이다. class ChecksumAccumulator { } 이런 클래스 가 있을때 new ChecksumAccumulator // 이렇게 해주면 객체가 만들어 진다. 클래스 안에는 필드와 메소드를 넣을 수 있다. 이 둘을 합쳐 멤버라고 한다. 필드는 var 이나 val 로 정의하며 메소드는 def 로 정의 한다. class ChecksumAccumulator { var sum = 0 } 위의 클래스를 가지고 객체를 2개 만들면 val a = new ChecksumAccumulator val b = new ChecksumAccumulator 해당 객체안의 sum 필드는 다른 메모리를 참조 할 것이고 0 을 바라 볼 것이다. sum 이 va..
객체의 동일성 두개의 객체가 동일한지 아닌지 구분하는 작업은 별거 아닌거 같지만 , 꽤나 복잡하고 미묘한 일들이 도사리고 있습니다. 방심하다 망하죠. ;; 게다가 언어 마다 다릅니다. 테스트만이 살길~ * 2007년 상당량의 자바코드를 연구한 논문에서는 거의 대부분의 equals 메소드에 오류가 있다는 결론을 내릴 정도로 상상 이상으로 실수가 많답니다. OTL 이 글 에서는 중요 포인트만 딱딱 집어서 설명 해 보겠습니다. ( 모든 걸 설명하지 않습니다. ) 혹시 더 자세하게 파헤치고 싶은 분이라면 아래 서적을 참고 하시구요. (꼭 읽어보길 당부..) 자바 : Effective Java 2판 - 항목 8,9 스칼라 : Programming in Scala 2판 - 30장 먼저 익숙한 자바로 먼저 살펴보고,..
while 스칼라에서 While,For 문은 없다로 생각하는게 좋습니다. 개인적으론 Java 8 이상에서도 while 문은 없다라고 생각하는게 좋지 않나 합니다. 아래와 같이 다른 방법 Stream API LINQ STL algorithm 컬렉션의 고차함수(map , flatmap, filter, zip, fold, foreach, reduce, collect, partition, scan, groupBy 등) 을 먼저 생각하는게 좋습니다. 특징 * 스칼라의 while 은 다른 언어와 마찬가지로 동작합니다. * if 나 for 가 표현"식" 인 반면에 while 은 "식" 이 아닙니다. 그냥 루프입니다. 즉 값을 내어 놓지 않습니다. 예를들어 if 표현식의 경우 값을 내놓기 때문에 아래와 같이 코딩이 가..
공변성,불변성,역공변성 자바로 설명 백그라운드 Object
Queue mutable val queue = new scala.collection.mutable.Queue[String] queue += "a" queue ++= List("b", "c") println(queue.dequeue) => a Stack mutable val stack = new scala.collection.mutable.Stack[Int] stack.push(1) stack.push(2) println(stack.pop) => 2 각각 immutable 타입도 존재한다.
ArrayBuffer 각 언어에서 가장 많이 사용되는 컬렉션을 말하자면 (개인적인 경험으로) C++ 에서는 vector , map 이고 자바에서는 ArrayList , HashMap Python 에서는 [] , {} 즉 리스트 와 딕셔너리 였던거 같습니다. 다른 언어를 사용할때 가장 먼저 찾게되는것이 바로 저런 가장 기본적인 컬렉션들인데요. 스칼라는 무엇일까요? JVM 상에서 돌아가는 스칼라에도 자바처럼 ArrayList (동적으로 사이즈가 변하는 배열) 같은게 있을까요? 특성 * 스칼라에는 자바의 java.util.ArrayList 가 없다. 대신 ArrayBuffer 가 있다. mutable 속성을 지녔다. * 자바의 ArrayList 는 C++ 의 vector 와 유사하다. (즉 링크드리스트로 구현..
스칼라 컬렉션과 자바 특성 * 스칼라 컬렉션에서 배열은 특별하다. 스칼라 배열은 어떤 면에서 자바 배열과 일대일 대응된다. 즉 Array[Int] 는 자바에서는 int[] 로 표현할 수 있다. 다만 스칼라쪽 배열이 훨씬 많은 기능을 제공한다는 점. 1. 제너릭 할 수 있다. Array[T] 식으로 만들 수 있다. 2. Seq[T] 와 호환 가능 3. 모든 시퀀스 연산을 지원한다. (map, filter, reverse 같은..) * 스칼라는 자바에 비해 변하지 않는 컬렉션을 강조하며, 한 컬렉션에서 새로운 것으로 변환하는 많은 연산 제공 * 스칼라 자바 양방향 변환가능 타입 Iterator java.util.Iterator Iterator java.util.Enumeration Iterable java...
Map 특성 * Map 은 변경 가능한 것 (mutable.Map) 과 변경 불가능한 것 (immutable.Map) 모두를 제공합니다. import scala.collection.mutable.Map 예를들어 put 이라든지 remove 메소드는 immutable.Map 에서는 사용 불가. * Map 을 위한 기반 트레이트가 있고 이를 상속한 변경 가능 집합, 변경 불가능 집합을 위한 2가지 트레이트가 있다. ( Set 과 비슷) 생성 val m = Map[Int,String]() // 다른것들과 마찬가지로 팩토리 메소드를 이용해 만들 수 있다. val m2 = Map (1 -> "one" , 2-> "two") 이렇게 초기화 할 수 있고 val m3 = Map ( (1,"one") , (2,"two"..
- Total
- Today
- Yesterday
- 스칼라 강좌
- CORDA
- 안드로이드 웹뷰
- Akka
- play2 강좌
- hyperledger fabric
- 스칼라
- 이더리움
- 파이썬 데이터분석
- 스칼라 동시성
- Golang
- Actor
- 하이브리드앱
- 하이퍼레저 패브릭
- 파이썬
- akka 강좌
- Play2 로 웹 개발
- 파이썬 강좌
- 파이썬 머신러닝
- 파이썬 동시성
- 그라파나
- Hyperledger fabric gossip protocol
- 스위프트
- 엔터프라이즈 블록체인
- 플레이프레임워크
- play 강좌
- Adapter 패턴
- Play2
- 블록체인
- 주키퍼
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |