본문 바로가기
반응형

Data Platform/Scala6

case class와 companion object 그리고 case object 아직 소스를 제대로 보진 못했지만case class와 companion object이 친구들이 매우 핵심적인 역할을 하는것 같습니다.일단 두 친구들의 역할과 특징에 대해서 알아보겠습니다.역할 분리와 관심사의 분리case class는 주로 데이터를 담는 “모델” 역할을 합니다.불변성을 유지하고, equals, hashCode, toString과 패턴 매칭에 유용한 unapply 메소드를 자동으로 생성 합니다.companion object는 그 case class와 관련된 부가 기능(예: 팩토리 메소드, 유틸리티 함수, 상수 등)을 제공 합니다.이를 통해 인스턴스 생성 방식이나 초기화 로직을 캡슐화할 수 있습니다.자동 코드 생성case class를 선언하면, 컴파일러가 companion object 안에 기.. 2025. 3. 31.
companion class와 companion object이 차이점은? companion  obejct만 알고 있었는데 갑자기 companion class라는게 나와서..갑자기 머릿속에서 헷깔림이라는게 찾아왔습니다..;;우선! 스칼라에서 헷깔리만한 친구들을 정리해보자!용어 정리용어정의class일반 클래스, 인스턴스를 직접 만들 수 있음case class데이터 중심 클래스, 불변성과 편의 기능 자동 제공companion classcompanion object랑 짝인 class (클래스 이름이 동일)companion object와 이름이 같고, 같은 파일에 있는 클래스object싱글톤 객체, 인스턴스 없음, 전역 유틸/설정 용companion objectclass랑 같은 이름, 같은 파일에 있는 objectapply, unapplyobject에 정의되는 팩토리/패턴 매칭 기능*.. 2025. 3. 31.
Scala를 처음 접하는 초보자를 위한 입문 가이드_01 스칼라 스터디guide doc : https://docs.scala-lang.org/tour/tour-of-scala.htmlscope : Introduction, Basic, Unified Types, Classes IntroductionScala란 무엇인가?Scala는 모던한 다중 패러다임 프로그래밍 언어로,일반적인 프로그래밍 패턴을 간결하고 우아하며, 타입 안정성(type-safe)을 유지하면서 표현할 수 있도록 설계되었습니다.Scala는 객체지향(Object-Oriented)과 함수형(Functional) 프로그래밍의 장점을 결합한 언어입니다.Scala는 객체지향 언어다Scala는 완전한 객체지향 언어입니다.• 모든 값이 객체이며,• 객체의 타입과 동작(behavior)은 클래스(Class)와 트.. 2025. 3. 21.
couchbase와 같은 키/벨류의 key design?? 오픈소스로 키/벨류의 형태의 스토리지들이 많이 있다. Redis나 couchbase등이 그 예이다. 이러한 스토리지들에 저장을할 때 고려사항으로 key를 어떤식으로 만들어야할 지 고민이 되어진다.왜냐하면 이러한 key들은 한정되어진 범위를 가지고 있다. couchbase의 경우는 250byte로 제한을 둔다. 또한 이러한 key들의 무결성을 보장되어야 한다. 그렇지 않으면 데이터의 유실이 발생할 수가 있다.그래서 생각했던 것이 Hash였다. 그러나 자바진형의 String에서 제공되어지는 Hash는 중복의 염려가 있다고 한다.그래서 SHA-1 + Base64 Encoding(urlSafe)를 선택 하였다.아래는 스칼라 코드이며 해당 키는 아래의 소스를 통해 "IbDNShu-PGxJtnsUVuDJLv-aJo.. 2016. 4. 15.
(기초) 스칼라 데이터 구조(컬렉션) 2016/03/25 - [Language/Scala] - (기초) 스칼라 문법참고 사이트 : https://twitter.github.io/scala_school/ko/collections.html scala> val numbers = List(1,2,3,4,5)numbers: List[Int] = List(1, 2, 3, 4, 5) scala> Set(1,2,2)res20: scala.collection.immutable.Set[Int] = Set(1, 2) scala> val hostPort = ("localhsot", 8080)hostPort: (String, Int) = (localhsot,8080) scala> hostPort._1res21: String = localhsot scala> hos.. 2016. 3. 25.
(기초) 스칼라 문법 참고 사이트 : https://twitter.github.io/scala_school/ko/basics.html terrypark@localhost:~/program/sbt/bin$ sbt console[info] Set current project to bin (in build file:/Users/terrypark/program/sbt/bin/)[info] Starting scala interpreter...[info]Welcome to Scala version 2.10.5 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_31).Type in expressions to have them evaluated.Type :help for more information. s.. 2016. 3. 25.
반응형