검색결과 리스트
Programming/Scala에 해당되는 글 1건
글
Scala.1 기본 문법. Method / if - expression / for - expression
Scala.1 기본 문법
사족
지금 와서 스칼라 포스팅이라니.
Functional Programming Language 를 사용할 일이 있어서 어떤 언어로 쓸까 하다가 한번이라도 접해봤던 Scala 를 선택했다.
작년에 공부했던거 같은데 별로 사용을 안하니 엄청난 속도로 pop 이 되서 .. ㅡㅡ;;;;
정리해뒀으면 좋았겠지... 라고 같은 후회를 이번에도 하며,
오랜만에 ... 프로그래밍 관련해서 제대로 글을 쓴게 몇년 만인지 회상하며 포스팅!
어쨌거나 기념비적인 새로운 언어와 첫번째 만남이 되는 글인 만큼 외쳐본다.
Method 의 선언
명색이 Functional Programming Language 다. Method 부터!
- 다음에 다룰테지만, 스칼라는 Method 와 Function 의 (메서드,함수) 개념이 분리되어 있다. 본문에서는 두 개념을 메서드로 통칭한다.
다음과 같이 정의한다.
def <functionName> (<argument>: <type> ... ) : <returnType> = { <body> }
단, <returnType> 의 경우 deduction 이 가능하므로 생략 가능하다.
예컨데
def sum (a: Int, b: Int): Int = {
a + b
}
return keyword 는 사용하지 않는 것이 일반적.
인자 / 리턴 타입으로 사용할 수 있는 타입들
Unit(void), Int, Boolean, String, Method ( a : Int => Int , 인트를 받아 인트를 리턴하는 메서드 )
상수 / 변수
상수는 그나마 나은데, 변수는 가능한한 어쨌거나 사용하지 않는 것이 스칼라의 기본 스타일이었던 것 같다.
가장 기본이라고 생각할 수 있는 이 문법을 두번째로 소개하는 이유라 하겠다.
선언할 때, 타입명은 적을 수 없다.
val a = 3
var b = 3
if-expression
우리의 마음속에 있는 그대로 친숙하다.
if (<predicate>) { <then-clauses> } else { <else-clauses> }
brace ( { , } ) 는 다른 언어와 마찬가지로 생략 가능하다.
for-expressions
일반적인 for
for ( <indexing var> <- <initial value> until <escape condition> )
즉, 다음과 같이 사용할 수 있다.
for (i <- 0 until 10) {
}
for-each ( 여기서의 for - each 는 자바에서의 개념이다 )
컬렉션의 요소를 하나씩 방문하는 형태인 for-each 문
for (<element> <- <collection>) { <body> }
즉 , 다음과 같이 사용할 수 있다.
val array = Array(1, 2, 3)
for ( element <- array )
{
println(element)
}
또, 스칼라에서 자체적으로 foreach 라는 컬렉션의 멤버 메서드가 built-in 으로 존재하는데, 다음과 같다
<collection>.foreach(<Method>)
컬렉션의 각 요소에 대해서 인자로 전달받은 메서드를 적용한다.
val array = Array(1, 2, 3)
def increment(a: Int){
a+1
}
array.foreach(increment)
요소는 하나씩 얻어지므로, foreach 의 Method 는 element => Unit 의 형태로 구성되어야 한다.