일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 파이썬 동시성
- Adapter 패턴
- 주키퍼
- Play2
- 하이브리드앱
- 이더리움
- 파이썬 강좌
- 스칼라 동시성
- CORDA
- 하이퍼레저 패브릭
- 파이썬 머신러닝
- Hyperledger fabric gossip protocol
- 파이썬
- 플레이프레임워크
- 스칼라 강좌
- hyperledger fabric
- Actor
- 안드로이드 웹뷰
- 스칼라
- Akka
- play 강좌
- 스위프트
- 그라파나
- 엔터프라이즈 블록체인
- Golang
- 블록체인
- play2 강좌
- 파이썬 데이터분석
- Play2 로 웹 개발
- akka 강좌
- Today
- Total
목록스칼라 (31)
HAMA 블로그
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..
개인적으로 느끼는 스칼라라는 언어는 , 창시자가 너무 생각이 많구나~ 욕심도 많고 그런 느낌을 받습니다. "내가 쓰기 편하도록 엄청나게 많이 신경썼으니, 니들도 이걸 잘 쓰려면 내가 엄청나게 많이 신경쓴 그 부분들을 너희들도 일단 엄청나게 신경써서 공부해~~ 그 후엔 편해질꺼야" 이건데요. 그냥 안쓸래요. 라고 말해드리고 싶기도 합니다. ㅎㅎ 또한 이 언어는 하이브리드입니다. 함수형과 객체지향 양쪽을 지원합니다. 함수형을 추구하되 객체지향도 쓸 수 있다 정도입니다만, 덕분에 굉장히 강력해 질 수도 혹은 복잡할 수 있습니다. 딱 맞는 예는 아니지만 마치 하이브리드 객체지향인 C++ 이 더 순수한 객체지향언어인 자바보다 복잡하듯이 말이죠. C++ 개발자중 객체지향에 대해서 잘 모르는 개발자들이 많듯이 스칼라..
OKKY 및 페이스북 에서 두서없이 작성했던 글을 모아보았습니다.(정확한 통계가 아니라 제 협소한 경험에 의한 주장이라는 점과 대중화의 정의가 사람마다 다를것이기때문에 그냥 이런 생각도 있구나 하시면 될 거 같습니다.:-) ) 유망언어들 중 클래스가 없는 언어들이 있죠.클로저,golang 말입니다. 이 언어들은 클래스의 무용과 그 자체가 가진 복잡함을 단점으로 대비시켜 자기 언어를 광고 하기도 합니다. 맞는 부분도 있지만 대중화에 있어서는 틀렸다고 봅니다. 인간이란 사회적 동물입니다. 어떤것들의 집합,연관성,소속,계층에 대해 인식하는것을 애초부터 자연스럽게 느껴왔죠. 클래스가 그런겁니다. 사람들은 뭔가가 하나에 뭉쳐있다는것 만으로 큰 안정감을 얻게 됩니다. C++ 자바가 대규모 프로젝트에서 계속 사용되는..