일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Golang
- 스칼라 강좌
- 하이브리드앱
- 주키퍼
- play 강좌
- 파이썬 머신러닝
- CORDA
- play2 강좌
- Actor
- hyperledger fabric
- 스칼라
- 파이썬 강좌
- 파이썬
- Play2 로 웹 개발
- 그라파나
- 이더리움
- 플레이프레임워크
- 스위프트
- 안드로이드 웹뷰
- 하이퍼레저 패브릭
- akka 강좌
- 블록체인
- Hyperledger fabric gossip protocol
- 파이썬 데이터분석
- 엔터프라이즈 블록체인
- Play2
- 파이썬 동시성
- Akka
- Adapter 패턴
- 스칼라 동시성
- Today
- Total
목록스칼라 (31)
HAMA 블로그
스칼라에서의 for - comprehensions 1. 개념 스칼라 Doc 에서는 이렇게 말합니다. (http://docs.scala-lang.org/tutorials/FAQ/yield.html)파이썬,루비등에 있는 yield 처럼 스칼라도 yield 를 가지고 있지만 좀 다릅니다. 스칼라의 yield 는 for comprehensions 의 일부분으로 사용되며, 다른 언어의 list-comprehensions 의 일반화 입니다. 스칼라의 "for comprehensions" 는 하스켈의 "do" 와 동등하며 멀티플모나딕 연산을 위한 사용편의 정도일 뿐입니다. 사실 for - comprehensions 같은것들은 syntactic sugar 라고 합니다. 번역하면 사용자가 편하게 사용하기 위한 사탕발림 ..
* 참고로 커링이 무엇인가요에 대한 대답은 너무 쉽다. 하지만 왜 커링이 그렇게 유용하나요? 에 대한 대답은 아직 못얻었다. 뇌 로는 알겠지만 체득하지 못한 상태. 스칼라를 함수형 파라다임으로 사용을 많이 해봐야 알게 되지 않을까.. 스칼라에서의 커링 (currying) 1. 개념 스칼라 Doc 에서는 이렇게 말합니다. (http://docs.scala-lang.org/ko/tutorials/tour/currying)메소드에는 파라미터 목록을 여럿 정의할 수 있다. 파라미터 목록의 수 보다 적은 파라미터로 메소드가 호출되면, 해당 함수는 누락된 파라미터 목록을 인수로 받는 새로운 함수를 만든다.중요한 포인트를 뽑아내어 쉽게 설명해보면 매우 쉬운 설명 - 메소드라는건 파라미터를 가지고 있지요? 예를들어 a..
- https://github.com/enshahar/BasicFPinScala/blob/master/Intermediate/Monad.md- https://github.com/enshahar/BasicFPinScala/blob/master/Intermediate/Monad_Rules.md - Monad Programming with Scala Future- http://www.haruair.com/blog/2986- http://blog.seulgi.kim/2015/07/what-is-monad.html- 자바언어로 서술한 Functor 와 모나드 제 능력이 부족한 관계로 위의 글로써 대신합니다. (모나드 관련 한글 블로그 모음) 아참! 위의 글을 읽기 전에 반드시 모나드 괴담!을 읽어보세요. ^^ 모..
스칼라에서 JSON 데이터 다루기* scala 기존제공하는것보다 json4s 나 spray-json 이 더 나은듯하다. 1. 디펜던시 추가 import scala.util.parsing.json._ 2. 문자열에서 Json 객체 (Map 타입) 로 변경 - (1) def main(arg : Array[String]): Unit ={ val result = JSON.parseFull(""" {"name": "Naoki", "lang": ["Java", "Scala"]} """) result match { case Some(e) => println(e) case None => println("Failed.") } } //print 결과 : Map(name -> Naoki, lang -> List(Java, ..
Partially applied function 과 Partial function 먼저 아래 링크 참고 하세요. (아웃사이더님이 번역하신 글이 있습니다)https://blog.outsider.ne.kr/953 아마 저 글을 읽어도 Partial function에 관해 조금 헤깔리실텐데요. 간략하게 다시 설명해 드리겠습니다. 함수란 모든 x 에 대해서 y 라고 할때 부분 함수란 일부 x 에 대해서 y 인 함수를 말 합니다. 즉 제한을 둔겁니다.예를들어function A (int x ) { return x * x } 라는 함수에 대해서 아래 함수는 부분함수입니다. function A' (int x) { if x > 10 return x * x }모든 것을 처리하지 않고 싶을 때 부분 함수를 만들게 됩니다. ..
언더스코어 _ 는 스칼라에서 어떻게 사용되나? 1. Import import scala.concurrent._import 에서 _ 는 모든을 뜻한다. 자바에서 * 2. 디폴트 초기화 class Foo { var i : Int = _ // i = 0 var s: String = _ // s = null }Int 는 0 으로 초기화 되고 String 을 대입하면 null 로 초기화 됩니다. 3. 고계 함수에서 익명 파라미터 ( 1 to 10) map { _ + 1 } 4. 부분 함수에서 익명 파라미터좀 더 정확히 얘기하면 partially applied function. partial function 과 구분된다. 바로가기 def f(i : Int) : String = i.toString def g = (x..
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..
Option값이 있거나 또는 없거나 한 상태를 나타낼 수 있는 타입이다. 값이 담겨져 있는 Option 의 하위 타입은 Some[T] 이며, 값이 없으면 None 이다. Option 은 Try, Future 등과 함께 대표적인 모나딕컬렉션 이다. "컬렉션" 이다.보통 Option 을 떠올리면 2가지를 생각해야한다.1. null 을 안전하게 대체하기 위해 만들어진 것. -> 사용자에게 주의를 다시 한번 당부하는 것으로, null 예외가 발생할 확률을 없앤다.2. 연속체인에서 안정적으로 사용하기 위한 것 -> 연속으로 계산되는 상황에서 안정적으로 실행된다. 즉 중간에 문제가 생기는것을 방어한다. 주의 할 것은 방어가 되는 함수는 따로 있다는 것이며 아래 표에서 자세히 설명된다. Option 이 사용되는 경우..
List 활용 * List 는 스칼라에서 가장 많이 사용되는 데이터 구조일 겁니다.* 스칼라의 리스트는 디폴트로 불변형입니다.* 스칼라의 리스트 타입은 공변적입니다. 길이 구하기val a = List (1,2,3) a.length // 3 *배열과 달리 리스트의 length 는 비교적 비싼 연산입니다. a.isEmpty 를 a.length == 0 으로 사용하지 마세요. 양 끝에 접근하기val a = List ('a','b','c','d')a.head // 'a' 처음a.last // 'd' 마지막a.tail // List('b', 'c','d') 처음 제외 나머지 a.init // List('a','b','c') 마지막 제외 나머지 리스트 뒤집기 val a = List ('a',b','c','d')a...