반응형

프로그래밍/Scala 6

[Scala] 중첩함수, 매개변수 사용하기

안녕하세요 Dibrary입니다. 이번에는 Scala에서 중첩함수 및 매개변수를 여러 방법으로 사용해보겠습니다. 먼저, 중첩함수란 함수 내에 함수가 정의되어 있는 꼴입니다. 예시 코드를 먼저 보겠습니다. 보시면 max 함수 안에 max가 또 들어있죠. 근데 사실 안에 있는 max와 밖에 있는 max는 다릅니다. 왜냐하면, 전달인자 갯수가 다르기 때문입니다. 밖에 있는 max는 전달인자 3개, 안에 있는 max는 전달인자 2개. 그렇죠? 그리고, 실질적으로 max(a, max(b, c)) 코드가 실행 코드인데, 이 코드는 전달인자가 2개인 max만을 사용합니다. max(b, c)의 결과는 1개의 값으로 나오므로, 결국 max (a, 1개의 값) 꼴이기 때문입니다. 스칼라는 매개변수를 순서와 관계없이 지정할 ..

[Scala] 재귀함수

안녕하세요 Dibrary입니다. 어떤 언어든 함수 기능은 다 가지고 있습니다. 그럼에도 스칼라의 함수가 좀 더 특별하게 느껴지는 이유는 스칼라로 순수함수를 구성하면 굉장히 유용하기 때문일거 같네요. 순수함수가 가지는 특징은 아래와 같습니다. 입력 매개변수만을 가지고 계산을 수행한다. 동일 입력에 대해 항상 같은 값을 반환한다. 함수 외부의 어떤 데이터에 영향을 주거나 / 받지 않는다. 이런 특징 덕분에 스칼라는 함수형 프로그래밍에 적합한 언어입니다. 특히 부수효과를 발생시키지 않을 수 있다는 점이 매력적이죠. 간단하게 곱셈을 하는 함수를 정의해보았습니다. 33*44의 결과를 내보냅니다. 함수 정의할 때 중요한 점은 자료형을 명시해주어야 한다는 겁니다. 명시하지 않으면 아래와 같이 에러를 볼 수 있습니다...

[Scala] 와일드카드, 패턴가드 및 반복자가드 매칭

안녕하세요 Dibrary입니다. 이번에는 여러가지 매치되는 것만 걸러내는 방법을 배워보겠습니다. 책에는 단어가 '가드'라고 나오는데, 처음에 이게 왜 가드라고 하는걸까~ 싶었는데, 다음 단계로 진행하지 못하게 막는 의미로 본다면 '가드'를 쓸 수 있는거 같네요. 조건에 맞게 걸러내는 방법이 몇 가지 있는데, 그 중에 와일드카드 패턴매칭은 모든 입력 패턴을 매치시킴으로써 scala.MatchError가 발생하는 것을 방지합니다. 먼저 OK라는 문자를 가진 message 변수를 선언해보고 status에서 match를 해 보겠습니다. OK는 200에 매치 되므로 결과는 200이 나왔습니다. 만일 다른 값이라면 어떨까요? 예상한 대로 -1로 빠집니다. 결국 OK를 제외한 그 어떤 경우라도 other로 빠져서 -..

[Scala] 표현식 과 조건문

안녕하세요 Dibrary입니다. 이번에는 표현식과 조건문을 정리해보겠습니다. 먼저 표현식(Expression)이란 '실행 후 값을 반환하는 코드 단위'를 지칭합니다. 값을 반환하기 때문에 함수형 프로그래밍의 기반이 됩니다. 이게 정말 간단한 표현식인 것이죠. amount는 그저 100+10만 반환할 뿐입니다. 그러면 이렇게 하는 것과 무슨 차이가 있느냐 생각이 드실 겁니다. 각각 따로 입력하고 처리해도 같은 결과가 나오니까요. 표현식으로 표현할 경우 'x가 amount를 정의하기 위한 것' 이라는 의도가 보이게 하는 것입니다. 이 '이해'에 차이를 줄 수 있죠. 중괄호 안에 쓸 내용이라면 여러 줄에 걸쳐서도 작성이 가능합니다. 조건문은 if-else를 사용해서 작성이 가능합니다. 먼저 if만 써봤습니다...

[Scala] 데이터 및 변수 타입

안녕하세요 Dibrary입니다. scala를 본격적으로 사용하면서 java랑 비슷하지만 약간의 차이가 있는데, 이 내용을 자주 까먹곤 합니다. 그래서 scala 언어를 다룰 때 꼭 기억해 둬야 하는 기본적인 변수 타입 관련 내용을 정리해 보겠습니다. 먼저 cmd로 scala REPL 창을 열어줍니다. 이제 간단한 입력들을 통해 scala 언어 문법을 확인해 보겠습니다. 1. 값 정의 scala의 값은 val [이름] : [타입] = 리터럴 로 정의됩니다. 정석은 위 문법 꼴로 입력하는 것이지만, 제가 아래에서 생성한 y변수 처럼 : [타입] 을 넣지 않더라도 자동으로 타입을 맞춰 줍니다. 소수점을 넣어보니 Double 꼴로 맞춰준 것을 보실 수 있습니다. 근데, 정석대로 입력하려 하는데 자료형이 안 맞으..

[Scala] Windows에 Scala 설치하기

안녕하세요 Dibrary 입니다. Scala 연습을 하고자 설치를 하려고 했는데 설치 방법을 까먹어서 정리 해 둡니다. 먼저, 아래 사이트를 열어주세요. The Scala Programming Language BLOG Tuesday, April 5, 2022 As members of the Scala community, we should all be committed to providing a friendly, safe and welcoming environment for all, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and express www.scala-lang.org 그러면 아..

반응형