반응형
✅ 1. FutureFuture는 "미래에 완료될 값"을 나타내는 객체로 비동기적으로 수행하며, 그 결과(success of fail)을 담습니다.import scala.concurrent.Futureimport scala.util.{Success, Failure}import scala.concurrent.ExecutionContext.Implicits.globalobject FutureExample extends App { val f: Future[Int] = Future { // 시간이 걸리는 작업 (ex. 네트워크 요청) Thread.sleep(1000) 42 } // 결과 처리 f.onComplete { case Success(value) => ..
📚 1. Scala 컬렉션Scala는 함수형 프로그래밍(FP)와 객체지향(OOP)을 결합한 언어이며, 컬렉션 라이브러리가 풍푸하고 불변(immutable)과 가변(mutable) 컬렉션을 모두 제공하는 언어입니다. 데이터 처리 시 불변 컬렉션을 기본으로 사용하고, 필요시 가변컬렉션을 사용합니다.컬렉션특징예시List순서가 있는 불변/가변 컬렉션, 중복 허용List(1,2,3)Set순서 무관, 중복 ❌Set(1,2,3)Map키-값 쌍, 키 중복 ❌Map("a" -> 1, "b" -> 2)VectorList 보다 빠른 임의 접근, 불변 컬렉션Vector(1,2,3)Seq순서 있는 컬렉션의 상위 타입Seq(1,2,3)👉 1-1. Immutable vs Mutable🦖 Immutable 컬렉션값이 한 번 생..
📙 1. 기본 try / catch / finallyScala에서는 try문도 표현식(Expression)이며 try를 사용해 값을 반환할 수 있습니다. import java.nio.file.{Files, Paths}import java.nio.charset.StandardCharsetsobject TryCatchFinallyExample { def main(args: Array[String]): Unit = { val outputPath = Paths.get("output.txt"); // 한글 출력 파일 val sb = new StringBuilder() try { val num = "123a".toInt // NumberFormatExcep..
✅ 1. 패턴 매칭 (Pattern Matching)패턴 매칭은 switch문 보다 더욱 강력한 분기 처리 문법으로 값 비교뿐만 아닌 타입,구조,조건까지 매칭할 수 있습니다.package patterncaseobject PatternMAtchingExample { def main(args: Array[String]): Unit = { val x: Any = 42 x match { case 0 => println("Zero") case i:Int if i > 0 => println(s"Positive Int: $i") // 타입 + 조건 case s:String => println(s"String: $s") // 타입 매칭 case _ => println("Somethi..
✅ 1. 순수 함수 (Pure functions)순수 함수는 같은 입력에 같은 출력, 외부 상태를 변경하거나 부수효과(side-effect)를 만들지 않는 함수 입니다. 부수효과는 애플리케이션의 경계(I/O, DB, println 등)로 몰아두고 내부 로직은 순수하게 유지하면 테스트와 재사용성에 좋습니다.object PureFunctionExample { // 순수 함수 def add(a: Int, b: Int): Int = a + b; // 비순수 (부수효과 포함) 예시 - 테스트/재사용성 떨어지는 코드 def addAndPrint(a: Int, b: Int): Int = { val r = a + b println(s"result = $r") // 부수 효과 } ..
✅ 1. 클래스와 객체클래스(class): 객체를 만들기 위한 설계도객체(object): 클래스로부터 생성된 인스턴스class Person(val name: String, val age: Int) { def greet(): Unit = { println(s"Hello, my name is $name and I am $age years old.") }}object ClassObject extends App { val p = new Person("Charlie", 30) p.greet()}✅ 2. 생성자와 필드클래스 파라미터가 기본 생성자 역할이며 val을 붙이면 읽기 전용, var을 붙이면 수정 가능한 필드 보조 생성자는 def this(...)로 정의 가능합니다.clas..