일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- hyperledger fabric
- Actor
- 스칼라
- play2 강좌
- play 강좌
- 스칼라 강좌
- Hyperledger fabric gossip protocol
- 스칼라 동시성
- 이더리움
- 파이썬 강좌
- akka 강좌
- Play2
- Golang
- 플레이프레임워크
- Akka
- 파이썬
- 파이썬 데이터분석
- 파이썬 동시성
- Adapter 패턴
- Play2 로 웹 개발
- 스위프트
- 엔터프라이즈 블록체인
- 그라파나
- 블록체인
- 주키퍼
- CORDA
- 파이썬 머신러닝
- 하이브리드앱
- 하이퍼레저 패브릭
- 안드로이드 웹뷰
- Today
- Total
목록스칼라 강좌 (15)
HAMA 블로그
Promise이전 블로그글에서 Future 에 대해서 먼저 읽고 오자. (안읽으셨다면..) 스칼라의 Promise 는 Future 의 일반화라고 볼 수 있다. (스칼라의 Promise 다. 다른 언어 라이브러리들이 모두 Future, Promise 등에 대한 정의/구현이 조금씩 다를 수 있다. 요즘 처럼 동시성 이슈가 많은 시절에는 원할한 의사 소통을 위해 구분 지어야 할 것이다) 따라서 Future 에 대해서 학습했다면 쉽게 이해 가능하다. (여기서 일반화라는 말이 너무추상적이라 헤깔릴수 있을 텐데 좀 참아보자.)Future 에서는 보통 위임 행동이 강결합 되있었다. 즉 future.( 행동 ) 하지만 Promise 는 Promise 만 먼저 선언해두고 나중에 success 를 호출해서 완료된것을 알려..
* 이 글은 일단 발행은 하는데 오류가 있을 가능성도 있으며 수정&발전 될 것입니다. 동시성을 위한 스칼라 Observable 스칼라의 Observable 을 배우기 전에 여러가지 것들에 대해서 편하게 읽어보자. Play 의 Iteratee & Enumerator Play 에서 Iteratee / Enumerator / Enumeratee을 간단하게 말하면 :이름설명Iteratee [E, A] Iteratee [E, A]는 함수형 프로그래밍에서 iteration 컨셉의 일반화. E 입력,A 출력 (소비자역할)Enumerator [E]컬렉션을 일반화 한 것으로 형태 E를 열거한다. 무한 열거 (Streaming) 할 수도있다. (생산자역할)Enumeratee [E, A]거의 사용하지 않기 때문에 지금은 생..
스칼라에서의 가변인자 1. 간단 예제 object test { def func[T](xs:T*) = xs.foreach(x => println(x)) def main(arg : Array[String]): Unit ={ func(0,1,2) } }(xs : T*) 처럼 타입뒤에 * 를 붙혀주면 됩니다. 2. 컬렉션은 _* 를 붙여줍니다.object test { def sum(xs:Int*):Int = if (xs.isEmpty) 0 else xs.head + sum(xs.tail:_*) def main(arg : Array[String]): Unit ={ println(sum(0,1,2,3)) // OK ! val ns = List(1, 3, 5) println(sum(ns:_*)) // OK! prin..
타입 기초 https://twitter.github.io/scala_school/ko/type-basics.html 타입별칭(Type alias)https://alvinalexander.com/scala/scala-type-aliases-syntax-examples 추상 타입 http://docs.scala-lang.org/ko/tutorials/tour/abstract-types.html 매개변수된 타입 (제너릭)http://docs.scala-lang.org/ko/tutorials/tour/generic-classes.html 상위 타입 경계http://docs.scala-lang.org/ko/tutorials/tour/upper-type-bounds 하위 타입 경계http://docs.scala-l..
Null 과 친구들 Null – Trait 이다. 모든 참조 타입(AnyRef를 상속한 모든 클래스) 의 서브클래스이다. 값 타입과는 호환성이 없다. null – Null 의 인스턴스이고 자바의 null 가 비슷. val i : Int = null; 불가능 (값 타입과 호환성 없다) Nothing - Trait 이며 모든것들의 서브타입이다.기술적으로 예외는 Nothing 타입을 갖는다. 이 타입은 값이 존재하지 않는다. 값에 대입이 가능하다. 즉 리턴타입이 Int 인 메소드에서 리턴을 Nothing 타입인 예외를 던질 수 있다. Nil – 아무것도 없는 List 를 나타낸다.None – 아무것도 없다는 리턴 값을 표현하기 위해 사용된다. null 포인트 예외를 회피하기 위해 Option[T] 의 자식클래..
Apply자바를 하다가 스칼라로 넘어오면 희안한거 많이 보는데 apply 라는 것도 분명히 마주치게 되는데 이게 여러군데에서 다른 의미로 사용되서 좀 헤깔리죠. 그래서 이 참에 정리 한번 하고 넘어 갑니다. 기본 해당 객체 뒤에 하나 이상의 값을 괄호{}로 둘러싸서 호출하면 그 객체의 apply() 메소드를 자동으로 호출해 줍니다. 스칼라에서는 apply 라는 메소드가 기본적으로 이 객체(타입) 저 객체(타입) 에 각자 정의되어 있습니다.함수타입에서 apply 하면 이렇게 작동하고 , 리스트에서 apply 하면 요렇게 작동하고 그렇습니다. 중구난방이라는 말 그래서 어느정도는 외워야합니다.예를 보시죠예1)class applyTest { def apply(n : Int): Unit = { print ("he..
Getter 와 Setter 객체지향 프로그래밍에서 게터와 세터는 의도치 않게 이제 기본이 된 내용들 중 하나이지만 ( getter / setter 자체를 그냥 public 으로 변수 선언하는것과 마찬가지로 나쁘게 보는 시각도 있습니다. 객체지향은 외부 노출을 줄여야 한다고 보는데 게터,세터는 절차지향 마인드의 산물 ) 때로는 쓰기 귀찮아질 때 도 있긴합니다. 대부분의 게터와 세터는 매우 비슷하기 때문에 같은 기능을 하는 더 나은 방법이 있을거란 생각은 매우 타당 할 것이며 C# 에서는 그것을 위해 특별히 "프로퍼티"라는 것을 만들어서 아래와 같이 사용됩니다. private String strName; public String StrName { get { return this.strName; } set ..
함수와 메소드 이번 포스트 내용은 지금까지 그리고 앞으로 나올 강좌중에서 가장 중요한 포스트라고 생각합니다. 스칼라에서 함수/메소드는 그 만큼 중요합니다. 본 포스트의 내용이 불분명하거나 모자르면 반드시 다른 곳에서 보충하시길 바랍니다. 스칼라에서 함수종류 * 객체의 멤버로 있는 함수인 메소드 * 함수안에 정의한 내포 함수 * 함수 리터럴 * 함수 값 메소드 특성 * 스칼라 메소드 파라미터에서 중요한 점은 이들이 val 이라는것이다. def add(b : Byte) : Unit = { b = 1 // 파라미터가 val 이라 불가능 ! sum += b } * return 을 명시적으로 사용하지 말라. 스칼라는 메소드가 한 값을 계산하는 표현식인 것 처럼 생각하는걸 권장한다. * 메소드가 오직 하나의 표현식..
클래스와 객체 클래스,필드,메소드 객체 생성 클래스는 객체의 청사진이다. 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..
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 표현식의 경우 값을 내놓기 때문에 아래와 같이 코딩이 가..