일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 패턴
- CORDA
- 파이썬 동시성
- 주키퍼
- 안드로이드 웹뷰
- 파이썬 머신러닝
- Play2 로 웹 개발
- 스칼라
- play 강좌
- hyperledger fabric
- 플레이프레임워크
- 엔터프라이즈 블록체인
- play2 강좌
- Golang
- 하이브리드앱
- 그라파나
- 스칼라 동시성
- 스위프트
- Akka
- 이더리움
- Actor
- 파이썬 데이터분석
- 파이썬 강좌
- Hyperledger fabric gossip protocol
- 파이썬
- akka 강좌
- Today
- Total
목록Scala (51)
HAMA 블로그
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"..
Set 특성 * Set 은 변경 가능한 것과 변경 불가능한 것 모두를 제공합니다. * Set 을 위한 기반 트레이트가있고 이를 상속한 변경 가능 집합, 변경 불가능 집합을 위한 2가지 트레이트가 있다. ( 트레이트는 자바 인터페이스와 비슷한 것으로 나중에 설명 ) 생성 val s = Set ("Hi" , "There") 리스트나 배열과 비슷하게 생성한다. 변경 불가능한 Set 객체를 만들어서 변경 불가능한 s 에 대입한다. 변경 import scala.collection.immutable.set var s = Set ("Hi" , "There") s += "bye" 이 코드에서 눈여겨 볼것은 var 로 선언된 s 이다. 이 코드는 기존 s 에 "bye" 를 더하면서 새로운 집합으로 재 할당 한것이다. 즉..
Tuple 특성 * 리스트와 마찬가지로 변경 불가능 하다. * 리스트와 다른 점은 다른 타입의 원소를 넣을 수 있다는 점 * 메소드에서 여러 다양한 객체를 리턴해야 하는 경우 유용하다. 생성 val p = ( 99, "High") 그냥 객체들을 콤마로 구분하여 () 사이에 넣어주면 된다. 저것의 타입은 Tuple2[Int,String] 이다. 튜플의 타입은 원소의 개수와 각각의 타입에 따라 달라진다. (22 개 까지 지원) 즉 ('u','r',"the") 의 타입은 Tuple3[Char,Char,String]이다. 원소에 접근 println(p._1) 튜플의 첫번째 값에 접근할수있다. 마지막 왜 튜플은 원소접근을 p(0) 즉 p.apply(0) 처럼 할 수 없을까? -> 리스트의 apply 메소드는 항상..
이 시리즈는 스칼라언어의 창시자인 마틴 오더스키가 직접 저술한 Programming in Scala (2판) 을 참고로 하여 정리할 예정입니다. 잘못된 점이 있으면 지적해주시면 바로 수정하겠습니다. List 특성 스칼라의 배열이 값을 변경 할 수 있는 순서가 정해진 시퀀스라면 스칼라의 리스트는 기본적으로 값을 변경 할 수 없는 시퀀스입니다. 함수형 스타일이라는것은 메소드 내에서 절대로 부수효과가 일어나면 안되는, 그래서 더 신뢰할 수 있고 재사용하기 쉬운 코드를 만드는게 주 목적이라 , 그 목적에 적합한 콜렉션이라 할 수 있습니다. * 참고 : 부수효과(부작용)에 관한 이야기 Linked List 식으로 구현 되 있으므로 head / tail 중간 삽입같은게 원할합니다. 생성 배열 생성과 비슷합니다. v..
이 시리즈는 스칼라언어의 창시자인 마틴 오더스키가 직접 저술한 Programming in Scala (2판) 을 참고로 하여 정리할 예정입니다. 잘못된 점이 있으면 지적해주시면 바로 수정하겠습니다 Array 생성 스칼라에서 객체로 만들때는 new 를 사용합니다. 다음과 같죠 val a = new Array[String](2) // String 타입이 2개 담길수 있는 배열의 객체를 만들었네요. 자 배열에 값은 어떻게 넣을까요? a(0) = "hello" a(1) = "world" 요렇게 넣으면 됩니다. 여기서 눈여겨 볼것은 일단 val 로 선언했는데 값을 바꾼겁니다. 이건 전에 얘기했다시피 변수를 재 할당 할 수 없는거지, 변수가 가르키는 객체 안의 내용은 여전히 변경가능하다는거죠. - 자바에서는 Str..