목록Language/Scala (12)
우노
# 변수 생성 val a = "My" val b = "Name is" val c = "unho" # 문자열 내부에 변수 삽입 val result = s"${a} ${b} ${c}" # 문자열 출력 print(result) # My Name is unho
들어가기 앞서, 해당 포스트에선, Scala 코드 내부에서 외부 시스템 명령어를 실행하는 방법에 대해서 다뤄보겠습니다. 외부 시스템 명령어 실행 예제 외부 시스템 명령어는 아주 간단하게 실행 가능합니다. # library 를 import 한 뒤, import sys.process._ # 실행할 명령어 뒤에 ! 를 붙이면 됩니다. "ls -al" ! 만약, 명령어 결과를 변수로 할당하고 싶다면, 아래와 같이 사용하면 됩니다. val result = "ls -al" !! 참고 https://alvinalexander.com/scala/scala-execute-exec-external-system-commands-in-scala/
scala.util.matching.Regex 란? scala에서는 scala.util.matching.Regex를 통해 정규표현식을 사용할 수 있으며, 정규표현식을 통해 패턴을 정의하고, 문자열에 패턴을 적용해 원하는 정보만 추출할 수 있다. 예제 코드 정규표현식으로 사용할 패턴 뒤에 .r 을 붙이면, 알아서 Regex 타입의 인스턴스가 생성된다. // 문자열 정의 val sentence = "11-aA_bB_cC_dD-22" // 정규표현식을 통해 패턴 정의 val pattern = "[a-zA-Z_]+".r // 문자열에서 정규표현식에 해당하는 패턴만 추출 val matches = pattern.findAllIn(sentence) println(matches.toList) // List(aA_bB_..
특성 리스트와 마찬가지로 요소 변경이 불가능 하다. 하지만, 리스트와 달리 다른 타입의 요소를 넣을 수 있다. 보통 메소드에서 여러 다양한 객체를 리턴해야 하는 경우 유용하다. 생성 요소를 콤마로 구분지어 생성한다. 아래 튜플 타입은 Tuple2[Int, String] 이며, 요소의 개수와 각각의 타입에 따라 튜플의 타입이 달라진다. 튜플 타입은 22개까지 지원하며 ('a',b',"cde")의 타입은 Tuple3[Char, Char, String] 이다. val t = (99, "High") 요소 접근 튜플의 index는 0이 아닌 1부터 시작하며, _1, _2 와 같이 접근한다. // 튜플의 첫 번째 요소에 접근 t._1 참고 https://hamait.tistory.com/557..
Java와 Scala는 둘 다 JVM 위에서 실행되며, 기존의 Java 라이브러리를 그대로 사용할 수 있다는 공통점이 있습니다. 반대로 Java로 작성된 프로그램에서 Scala로 작성된 라이브러리를 사용할 수도 있습니다. Java는 객체지향을 지원하지만 Scala는 함수형과 객체지향을 모두 지원하며, Scala는 Java의 한계를 극복하기 위해 등장했습니다. Scala는 "함수형을 추구하되 객체지향도 쓸수 있다." 정도이지만, 덕분에 굉장히 강력해질 수도, 복잡해질 수도 있습니다. 해당 포스트에서는 Java와 Scala의 간단한 3가지 차이점에 대해서 다뤄보겠습니다. 1. 함수형 프로그래밍 언어 Scala는 "순수 함수"를 지향하는 함수형 프로그래밍 언어입니다. 순수 함수란? 함수의 입력이 주어지면, 항..
Scala에는 고정길이 배열과 가변길이 배열이 있다. 고정길이 : Array 초기화 //배열의 크기가 10인 Int type Array 초기화 val a = new Array[Int](10) //값을 할당해 Array 초기화 val b = Array("hello","world"); 요소 접근 // a 배열의 0번째 index 접근 a(0) // b 배열의 1번째 index 접근 b(1) 요소 수정 // a 배열의 0번째 index 수정 a(0) = 1 // b 배열의 1번째 index 수정 b(1) = 2 가변길이 : ArrayBuffer 초기화 import scala.collection.mutable.ArrayBuffer val c = ArrayBuffer[Int]() 요소 접근 // a 배열의 0번째..
Map Scala의 Map은 Python의 Dictionary와 유사하게 사용된다. 특성 Map 은 변경 가능한 것 (mutable.Map) 과 변경 불가능한 것 (immutable.Map) 모두를 제공합니다. 예를들어 put 이라든지 remove 메소드는 immutable.Map 에서는 사용 불가. import scala.collection.mutable.Map 생성 val m = Map[Int,String]() val m2 = Map(1 -> "one" , 2-> "two") // 이렇게 초기화 할 수 있고 val m3 = Map((1,"one") , (2,"two")) // 이렇게도 할 수 있다. 추가 val m = mutable.Map[Int,String]() // 아래 처럼 가능 ( mutabl..
String Interpolation이란? String Interpolation은 스칼라 2.10에 추가된, 데이터를 기반으로 문자열을 더 쉽게 만들수 있는 새로운 기능이다. 즉, 문자열을 출력하거나 선언할 때 중간중간 다른 변수를 끼워넣는 구문이다. String Interpolation은 s, f, raw 세가지의 방식을 제공한다. s String Interpolator 문자열 앞에 s를 붙혀서 사용하고, ${변수명}으로 변수의 내용을 참조할 수 있다. val a = "Hello" val b = s"${a} 1" println(a) // Hello println(b) // Hello 1 println(s"${a} World") // Hello World
break 스칼라에서는 기본 break 구문이 없어서 Breaks 객체를 만들어서 루프를 break 해야한다. 예제코드 // a가 6이 되면 루프중단 import scala.util.control._ var a = 1 var loop = new Breaks loop.breakable{ while(a
1.23456789 를 소수점 둘 째 자리로 반올림 해 1.23으로 표현하는 방법 import scala.math.BigDecimal val number = BigDecimal(1.23456789).setScale(2, BigDecimal.RoundingMode.HALF_UP).toDouble