Top Banner
FAST, EASY SCALA CH.2 SW_MAESTRO 4TH 노노노
17

130725 scala ch.2 ppt

May 25, 2015

Download

Education

scala study Ch.2
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 130725 scala ch.2  ppt

FAST, EASY SCALACH.2

SW_MAESTRO 4TH노승학

Page 2: 130725 scala ch.2  ppt

IF 식은 값을 가진다 -> 모든 구문이 값을 가진다 .

블록은 값을가진다 -> 가장 마지막 값

스칼라의 for 루프는 강력하다

세미콜론 생략

JAVA 나 C 의 void 는 SCALA 의 Unit 타입

함수정의에 함수정의에 == 이 없다이 없다 . (**). (**)

예외는 자바나 C++ 처럼 동작한다 . 하지만 catch 에 패턴매칭을 사용한다 .

스칼라는 체크 예외가 없다스칼라는 체크 예외가 없다 .(**).(**)

이 챕터의 학습목표 ?

Page 3: 130725 scala ch.2  ppt

if

값을 가진다 .

스칼라 인터프리터는 한줄씩만 읽고 처리하기때문에 여러줄의 조건식이 있을때는 구문이 안끝남을 ‘ { ‘ 로 표시해주어야한다 .

상수 (val) 초기화에 유용하다 .

Page 4: 130725 scala ch.2  ppt

;

세미콜론 생략가능하다 .

단 한줄에 여러문을 넣고싶은경우 세미콜론으로 구분한다 .

또는 여러줄에 한문을 넣고싶다면 한줄의 끝을 문의 끝이 될수 없는 심볼 (+,-,*..) 로 끝내야한다 . -> -> REPLREPL 에서는 블록설정 안하면 안됨에서는 블록설정 안하면 안됨 ....

Page 5: 130725 scala ch.2  ppt

블록식과 할당

JAVA, C++ -> {} 은 일련의 문의 집합 , 여러 액션의 집합

SCALA -> 일련의 식의 집합에 따른 하나의 값-> 마지막 값이 리턴값이 됨

x = y = 1 (x)

Page 6: 130725 scala ch.2  ppt

입력과 출력

print, println, printf

readLine, readInt, readDouble, readByte, readShort, readLong, readFloat, readBoolean, readChar

readLine 은 한줄의 프롬프트 문자열을 받는다 .

Page 7: 130725 scala ch.2  ppt

LOOP

while,do 는 동일

for(i <- 0 to 9) => for(int i =0;i<10;i++)

to method -> 1 to n -> Range() return

Page 8: 130725 scala ch.2  ppt

break

기본적으로 존재하지 않는다 .

해결책 1. 이진제어변수(guard) 를 대신 사용한다

2. 2. 중첩 함수를 사용한다중첩 함수를 사용한다 .. 함수중간에서 함수중간에서 returnreturn 가능 가능 (**)(**)

3. Breaks object 의 break method 를 사용한다 .

Page 9: 130725 scala ch.2  ppt

진화한 for and Comprehension

generator

guard

definition

Page 10: 130725 scala ch.2  ppt

Function

def fac(n:Int) = { var r = 1 for(i <- 1 to n) r = r* i r}

return 써도되고 안써도된다 .

타입명시 X , 자동으로 추론한다 -> But -> But 재귀호출할땐 반드시 재귀호출할땐 반드시 명시해야함명시해야함 ..

Page 11: 130725 scala ch.2  ppt

기본인자와 이름인자

함수 parameter의 초기값을 설정할수있다 . -> -> 기본인자기본인자

parameter 대입의 순서가 바뀌어도 이름을 명시해주면 상관없다-> -> 이름인자이름인자

Page 12: 130725 scala ch.2  ppt

가변인자def sum(args:Int*) = {~~~}

Int*,Double* -> Seq Class 인자

sum(1,2,3,4,5,6) -> 1+2+3+4+5+6

가변길이의 인수를 임의적으로 받을수있다 .

to method 를 써서 리스트를 만들었다면 :_* 를 써서 캐스트 해줘야함 .

Page 13: 130725 scala ch.2  ppt

프로시져

함수선언에서 값리턴이 Unit(void) 인 함수

= 를 제외하고 선언한다 .

사이드 이펙트만을 위해서 사용한다 .

Page 14: 130725 scala ch.2  ppt

lazy

val 선언시 lazy val 로 선언할시 선언하자마자 상수값이 계산되지않고 최초에 사용될때에 계산된다 . 파일연산 등과 같은 비싼 초기화에 유리하다

lazy val words = scala.io.Source.fromFile(“/usr/share/dict/words”).mkString-> -> 해당경로에 파일이없더라도 초기화엔 문제가 없다해당경로에 파일이없더라도 초기화엔 문제가 없다 ..

val -> val -> 정의되자마자 계산정의되자마자 계산lazy val -> lazy val -> 처음 사용될때 계산처음 사용될때 계산def -> def -> 사용될때마다 계산사용될때마다 계산

Page 15: 130725 scala ch.2  ppt

예외 처리

기본적으로 java, c++ 과 동일하다

try/catch, try/finally

Page 16: 130725 scala ch.2  ppt

예제

빈블록식 {} 값은 무엇인가 ? 타입은 무엇인가 ?

값은 없고 타입은 Unit

Page 17: 130725 scala ch.2  ppt

예제

x = y = 1 이 유효한 상황은 무엇인가 ?

x 의 type 이 Unit 이거나 Any 인 상황 .