외부 반복과 아규먼트 매칭 👩‍💻

Record For a Better Life ·2022년 9월 24일
0

다재다능코틀린

목록 보기
3/6

external iterator - 외부 반복자, 명령형 스타일에서 사용 // 프로그래머가 시퀀스를 명시적으로 제어 가능

internal iterator - 내부 반복자, 함수형 스타일에서 사용 // 시퀀스를 대신 제어해주고 프로그래머가 내부의 행동/로직 또는 연산에만 집중할 수 있도록 함

argument matching 기능을 통해 복잡성을 제거하고 logic을 투명하게 만들어서 코드를 보는 사람들에게 직관성을 줄 수 있도록 하자!

4-1 범위와 반복

레인지 클래스

val oneToFive: IntRange = 1..5

⬇️ intRange를 적지 않아도 타입 추론 기능이 변수의 타입을 추론해줌!
example:

val aToE: CharRange = 'a'..'e'

val seekHelp: ClosedRange/ = "hell".."help"

range은 ..연산자의 앞, 뒤 값을 모두 포함한다.

정방향 반복

int나 char 반복문은 for(x in ..)문에서 사용 가능하지만,
"hell"부터 "help"까지 반복을 시도하면 문제 발생 >> 이 문자열들의 반복이 갖는 부모클래스 ClaosedRange/에는 iterator()이 없기 때문이다. 하지만 객체를 반복하는 확장함수를 통해 가능하다. 🖐

후방향 반복

중위표기법 (inflix notation)으로 downTo를 사용해서 코드를 읽기 쉽게 만들자!

for (i in 5 downTo 1 ) { print("$i, ") }

범위 안의 값 건너뛰기

until() 메소드 : ..와는 다르게 마지막 값 미포함.
step() 메소드 : 반복 중 특정 값 skip

for (i in until 10 step 3) {print("$i, " }

step() 메소드는 .., until, downTo 로 만들어진 IntRange 또는 IntProgression 객체를 IntProgression 객체로 변화시킨다.

filter() 메소드는 람다표현식을 인자로 사용하여, 순차적이지 않은 방법으로 값을 건너뛴다.

profile
모든 것을 기록하는 벨로그 💻

0개의 댓글