본문 바로가기

Scala

Scala에서 변수의 정의 스칼라에서는 변수의 선언을 2가지로 할수 있다.val 로 선언한 변수는 내용을 바꿀 수 없다.var 로 선언한 변수는 내용을 바꿀 수 있다.이 변수 선언 대해서는 아래의 코드를 참조하면서 설명하도록 하겠다.class Rectangle(val x: Double, var y: Double)define class Person val r1 = new Rectangle(15, 10)p: Rectangle = Rectangle@ad93135s r1.xres2 : Double = 15 r1.yres3 : Double = 10 r1.x = 25 //변경 불가:13: error: reassignment to valr1.x = 20 ^r1.y = 20 //변경 가능r1.y: Double = 20 x는 변경이 불가능 하지만.. 더보기
Scala에서의 파라메타(parameter)와 인자(argument) 구분법 스칼라에서 parameter와 argument 구분법. class Test { def test(strings: String*): Seq[String] = { ...def test1(x: Double, y: Double)(z: String)} test(strings: String*)에서 strings는 매개변수 또는 인자고, 괄호안에 (string: String*)는 매개변수 목록 또는 인자 목록이다. test1에서는 인자 목록이 2개이고 첫번째 인자(x: Double, y: Double)에서는 인자가 2개 들어있고(x, y), 두번째 인자에서는 인자가 1개(z: String) 들어있다. 더보기
Chapter 2. Expressions, Types, and Values 이 챕터에서는, 스칼라 프로그램의 블록들(expression, types, values)을 기본적으로 빌딩하는것을 알아 볼 것이다. 이러한 개념들을 이해하는것은 어떻게 스칼라 프로그램이 작동하는지에 대한 mental model을 빌드하는데 필수적이다. 2.1. Your First Program 스칼라 콘솔 또는 워크시트(IDE 말하는듯)에서 "Hello world!"를 입력하고 리턴을 누르거나(콘솔에서) 워크시트를 저장해라. 아래에서 이런 비슷한 반응을 볼 수 있다."Hello world!" // res: String = Hello world!이 프로그램에 관해 할 얘기가 많다. 이것은 single expression, particular a literal expression 또는 literal for .. 더보기
Chapter 1. Getting Started 시작하기 앞서, https://underscore.io/training/courses/essential-scala/ 주소에 있는 essential scala 라는 책 내용을 계속해서 업데이트 할 예정입니다. 잘못된 부분은 댓글로 알려주시면 감사하겠습니다. Chapter 1 Getting Started 이 책의 스칼라 코드의 짧은 예제들을 실행해 볼 것이다. 스칼라 실행방법에 2가지의 추천사항이 있다. 스클라 콘솔을 이용하는방법(커맨드 라인을 좋아하는 사람들한테 추천)IDE를 사용해서 스칼라를 사용함.(IDE를 사용하는사람들한테 추천) 1.1 스칼라 콘솔 셋업 http://scala-lang.org 홈페이지에 가면 스칼라 콘솔을 셋업하는법이 나와있다. 스칼라가 인스톨 되었다면, 반응형 콘솔을 실행해서 커맨.. 더보기
매개변수 매개변수 목록 def upper(doubles: Double*): Seq[Double] = ... //여기서 doubles는 매개변수가 Double은 매개변수 목록이다. 매개변수와 매개변수 인자를 구분하는 이유는 향후 암시적 인자 처리 규칙이나 함수의 커링(currying) 등에서 인자와 인자 목록을 구분해야 할 필요가 있기 때문이다. 매개변수화한 타입을 지정할 때 자바에서는 꺽쇠괄호()를 사용하지만 스칼라에서는 각괄호([...])를 사용한다. 더보기
튜플(Tuple) 튜플(Tuple)은 두개 이상의 값을 가질 수 있는 컨테이너. 이 안에 있는 값들은 각각 다른 데이터 타입을 가질 수 있다. 먼저 튜플의 한 예제를 들어보겠다. Int Double, String 형의 값을 가지는 튜플을 생성하여 보겠습니다. scala> val test = (5, 5.5, "Test") 튜플은 이렇게 비교적 간단하게 선언할 수 있다. C언어의 Array와 달리 튜플의 순서는 1부터이다. 다른방식으로 튜플을 생성하는 방법은 키(Key)-값(Value) 형식으로 나타낼 수 있다. scala> val y1 = "y1" -> "55.55"y1: (String, String) = (y1,55.55) scala> val y2 = y1._2 -> y1._1v2: (String, String) = (5.. 더보기
스칼라(Scala) 기초 scala > println("Hello World")Hello, World scala > val test = "just Test"test: String = just Test scala > var test1 = "just Test1"test1: String = just Test1 val은 Value의 약자로 불변(immutable)의 타입을 갖는 저장 단위이다.var은 Variable의 약자로 데이터를 재할당 할 수 있다. scala > val test = "Test"error : reassignment to val test = "Test" scala > var test1 = "Test"test1: String = "Test" 리터럴(literal) : 스칼라에서 리터럴은 텍스트"Test", 234234.. 더보기
스칼라 공부 중 메모할 것들 Scala에서 패키지나 클래스에 속한 모든 함수 또는 변수들을 호출하고 싶을때는 *(asterisk) 대신 _(underscore)를 사용한다 ex) def double(x: Int): Int = x * 2val testDouble = double _ 스칼라에서는 모든것을 객체 취급 한다. ex)1 + 5 % 2 더보기
함수 타입과 값 함수의 타입은 함수의 입력 타입과 반환값 타입의 단순한 그룹으로, 입력 타입으로부터 출력 타입으로의 방향을 나타내는 화살표로 배열한다. def test(x: Int): Int = x * 2 val intest: (Int) => Int = double // val intest = double_로 나타낼 수 있다. val intestcopy = intest 더보기
REPL 이란? 책을 읽다가 REPL 이란 단어가 계속 등장하였다. 별로 중요하지 않다고 생각해서 계속 넘어가였으나, 좀 더 자세히 알아보고자 인터넷에서 찾아보았다. REPL : Read-Eval-Print Loop의 약자로 스칼라, 파이썬 등 대화형 환경을 말한다.콘솔에서 컴파일 없이 코드를 입력하고 출력 결과를 확인 할 수 있는 환경을 말하는 것 같다. 더보기