130725 scala ch.2 ppt

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

Upload: -

Post on 25-May-2015

368 views

Category:

Education


3 download

DESCRIPTION

scala study Ch.2

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 인 상황 .