나누고 싶은 개발 이야기

Data Engineer로서 기록하고 공유하고 싶은 기술들. 책과 함께 이야기합니다.

Language/scala 4

Scala의 Enum

scala의 enum은 java와 같이 enum 키워드로 존재하지 않았다. 이 문장은 scala 3이 도입되면서 거짓이 되었다. scala 3에서 새롭게 디자인되었는데 scala 2의 문제점은 무엇이었는지 궁금해서 찾아보게 됐다. 1. Enumeration scala 2에서는 앞서 말한 대로 enum 키워드가 존재하지 않는다. 대신 Enumeration 클래스를 상속해서 사용한다. scala API 문서에 올라온 코드를 예를 들면 아래와 같이 사용한다. object WeekDay extends Enumeration { type WeekDay = Value val Mon, Tue, Wed, Thu, Fri, Sat, Sun = Value } 별도로 지정한 이름으로 Enumeration을 생성하려면 Valu..

Language/scala 2023.12.17

[Scala] evaluation strategies in scala

이번 글에서는 scala의 evaluation strategy에 대해서 정리한다. 해당 글은 Evaluation strategies in scala 글의 내용을 토대로 샘플 코드를 달리해서 작성했다. 먼저 evaluation strategy의 개념부터 살펴보고 종류별로 구분해 보자. evaluation strategy evaluation strategy(이하 평가전략)이란 함수에 전달한 인자값을 함수가 실행될 때, 언제 어떻게 결정하는지 평가함을 말한다. Java에 익숙했던 필자로서는 당연히 함수에 값을 전달해 주는거 아닌가?라고 생각이 들었지만, 개념상 크게 2가지가 존재하며 큰 차이가 있다. 평가 전략의 2가지는 다음과 같다. Strict evaluation 함수에 인자값을 전달하기 전에 인자값을 평..

Language/scala 2020.04.03

[Scala] with 키워드 정리

기존 scala로 된 프로젝트를 파악하던 중 다음과 같은 코드를 보고 with 키워드가 헷갈리기 시작했다. val mapper = new ObjectMapper() with ScalaObjectMapper 그래서 필자와 같이 scala와 친숙해 지려고 노력하는 분들을 위해 짧게 with 키워드를 짧게 정리해 보고자 한다. scala 책을 살펴보면 with 키워드가 처음 나오는 부분은 trait가 아닐까 싶다. trait는 캡슐화된 메소드와 필드 정의를 재사용하는데 사용된다. 클래스 상속도 재사용이 가능하지만 하나의 부모 클래스만 가져야 한다는 부분이 다르다. trait는 믹스인을 통해 여러개의 trait를 조합할 수 있다. 믹스인을 할 때 사용하는 키워드가 with이다. 그럼 실제 사례를 들어보자. 먼저..

Language/scala 2019.04.26

Evaluation Rules

coursera의 Functional Programming Principles in Scala 강좌를 들으며 중요한 개념들만 블로그에 정리해 보고자 한다. call by value : 함수를 실행하기 전에 인자들의 값을 구한다. call by name : 함수를 먼저 실행하고 인자값이 필요할 때 값을 구한다. 다음과 같이 함수가 있다고 하자. 인자값을 달리해서 각 함수를 호출할 때 어떤 속도 차이가 있는지 보자. def square1(x:Int, y:Int) = x*x def square2(x: => Double, y:Int) = x*x square1(2,3) : 2*2 -> 4square2(2,3) : 2*2 -> 4동일한 단계가 필요하다. square1(3+4,8) : square1(7,8) -> 7..

Language/scala 2017.09.12
반응형