본문 바로가기

개발/SCALA3

Case class [펌] 스칼라는 케이스 클래스 문법을 지원한다. 케이스클래스는 다음과 같은 일반적인 클래스이다.기본적으로 불변이다.패턴 매칭에 따라 분리될 수 있다.레퍼런스 대신 구조적 동일성에 의해 비교된다.간결하게 초기화 되고 사용될 수 있다.예제를 살펴보자. Notification 추상 클래스가 슈퍼클래스와 각 구현 클래스 Email, SMS, VoiceRecording이다.abstract class Notification case class Email(sourceEmail : String, title : String, body : String) extends Notification case class SMS(sourceNumber : String, message : String) extends Notification c.. 2017. 7. 25.
함수형 프로그래밍 [펌] 요즘 스칼라를 통해 함수형 프로그래밍(Functional Programming)을 공부하고 있는데, 문득 함수형 프로그래밍의 장점을 요약해 표현하라면 뭐라고 설명해야 할지 생각해보게 됐다. 우선, 객체 지향 언어와 함수형 언어의 가장 근본적인 차이점은, 객체지향 언어의 first-class citizen은 클래스 내지 객체가 되는 반면에 함수형 언어는 함수 그 자체가 first-class citizen이 된다는 점이다.First-Class Citizen First-class citizen이란 프로그래밍 언어의 설계 시에 런타임에 프로그램 흐름의 중심으로 결정한 엔터티를 의미한다. 예를 들어, 객체 지향 언어에서 first-class citizen은 ‘객체’라 볼 수 있으며, 프로그램이 실행되면 객체들 간.. 2017. 4. 19.
under score 정리 [펌] Scala dreaded underscore from Normation 첫 슬라이드는 다음과 같습니다. 뭔가 어려워보이죠? 각종 _ 의 용법은 모두 들어가 있습니다. 아주 간단하게 설명하면 아래의 offset 에 대입되는 커링 함수 sum2(count) 에서 count는 매번 실행시의 count 값이 바인딩됩니다.(악 벌써 여기부터 어려워!!!)123456789101112131415class Underscores { import collection.{ Map => _ , _ } var count : Int = _ def sum = (_:Int) + (_:Int) def sum2(a:Int)(b:Int) = a+b def offset = sum2(count) _ def sizeOf(l:Traversable.. 2017. 3. 28.