분류 전체보기 (53) 썸네일형 리스트형 코틀린: 확장 함수와 수신 객체를 갖는 함수 타입(1/3) 책 여기 저기 흩어져 있던 확장 함수에 관련된 내용을 한 군데 모았습니다. 자세한 내용은 쉽게 다가가는 최신 프로그래밍: 코틀린 - 3.2 함수형 프로그래밍, 3.4 람다 식: 고급 및 3.6.2 확장 함수를 참고하기 바랍니다. 확장 함수와 관련된 내용이 이렇게 많았다구요? 놀랍죠! 4.16 범위 함수(scope function) 에서 소개한 5개 범위 함수 중 with를 제외한 4개(also, apply, let, run)가 모두 확장 함수입니다. 확장(extension)이란 기능을 추가한다는 뜻입니다. 정확히 말하면 기존 클래스(class)에 기능을 추가한다는 뜻입니다. 클래스에서 제공하는 함수 대신 응용 목적에 필요한 기능을 추가하는 겁니다. 클래스에 추가하는 기능은 대부분 함수이지만 속성도 추가.. 코틀린: 3장 테스트에 도전해 보세요 (4번 정답 해설) 문제 4 두 숫자의 최소 공배수(LCM, least common multiples)를 구하는 함수 findLCM()을 람다 식으로 바꿔서 코드를 작성해 보세요.■ 최소 공배수(LCM)와 최대 공약수 (GCD, greatest common divisor)3과 7의 최소 공배수는 21이지만, 12와 18의 최소 공배수는 36입니다. 최소공배수 = (a × b) / 최대공약수 입니다. 최소 공배수는 최대 공약수(GCD, greatest common divisor)와 반비례 관계입니다. 3과 7의 최대 공약수는 1이지만 최소 공배수는 21입니다. 12와 18의 최대 공약수는 6이지며, 최소 공배수는 36 입니다(인터넷 검색을 해 보면, 대부분 위 공식을 구현한 코드를 제시할 겁니다. 최소 공배수 코드는 마트.. 코틀린: 3장 테스트에 도전해 보세요 (6번 정답 해설) 문제 6 휴대폰 번호에서 숫자만 추출하는 예제를 교재 p.141에서 소개했습니다. 이 코드를 참고하여 주민등록번호 13자리 중 앞 6 숫자와 뒤 7 숫자를 추출하는 프로그램을 만들어 보세요. 단, 아래 조건을 모두 만족해야 합니다.(1) String 클래스의 확장 함수를 선언해야 합니다.(2) 람다 식을 함수 타입의 형식 인자로 전달해야 합니다.■ 확장 함수의 서명(signature) 선언(1)번 조건에 맞게 extractFirst()를 String 클래스의 확장 함수로 추가하려면 "fun String.extractFirst( ) "와 같이 선언하면 됩니다. 이 함수의 반환 타입은 부분 문자열을 추출한 결과이기 때문에 String입니다. 이어서 이 확장 함수의 형식 인자를 "op:String.( ) .. 코틀린: 3장 테스트에 도전해 보세요 쉽게 다가가는 최신 프로그래밍: 코틀린 - 3장 함수를 완전히 이해했나요? 다음 문제를 풀어 보세요.문제 1 아래 코드는 교재 p.117에서 설명한 프로그램입니다. (1) 함수 divide()의 형식 인자 b가 0이면 어떤 Exception이 발생할까요? (2) 교재 p/74쪽에서 설명한 명시적 예외 발생: throw를 참고하여, 예외 처리가 가능하도록 코드를 수정해 보세요.fun divide(a:Int=5, b:Int, c:Int=3): Double { return (a/b + c).toDouble()}fun main() { println(divide(b=1)) println(divide(5, 2)) } 문제 2 교재 p.136의 함수 convert() 함수를 테스트하기.. 코틀린: 인라인(inline) 함수와 noinline 인라인(inline) 함수에 관한 보충 설명입니다. 자세한 내용은 쉽게 다가가는 최신 프로그래밍: 코틀린 - 3.6.3 인라인 함수를참고하기 바랍니다. 인라인 함수 개념은 간단합니다. 인라인 함수를 호출하는 문장 대신 이 함수의 전체 코드로 바꿔치기 하는 것입니다. 교재 p.153에 소개한 예제입니다. inline fun squared(a: Int, f: (Int) -> (Int)): Int { return f(a)}fun main() { val x = 4 val result = squared(x) { k -> k * k } println("$x * $x = $result")}IDEA에서 Tools > Kotlin > Show Kotlin Bytecode 를 선택하면 나타나는 Kot.. 코틀린: 함수형 프로그래밍과 일급 객체(updated) 함수형 프로그래밍에서 사용하는 일급 객체(first class citizen)란 용어가 낯선가요? 이코노미석, 비지니스석처럼 구분하는 느낌이 들어 거북하지 않았나요? 알고보면 아주 간단한 개념입니다. 함수형 프로그래밍에서 일급 객체란 함수를 변수(=값)처럼 다룰 수 있다는 뜻입니다. 자세한 내용은 쉽게 다가가는 최신 프로그래밍: 코틀린 - 3.2 함수형 프로그래밍을 참고하기 바랍니다.아래 예에서는 두 수를 더하는 함수 sum()을 정의합니다. sum()의 형식인자 a, b는 Int 타입 변수를 전달받습니다. 함수 sum()은 덧셈 결과인 Int 타입 변수 c를 반환합니다. 여기까지는 일반 함수입니다.fun sum(a:Int, b:Int): Int { val c: Int = a + b retur.. 코틀린 : 2장 테스트에 도전해 보세요(6번 정답 해설) 문제 6 (프로그래밍) 교재 p.97-p.99의 BMI(Body Mass Index)를 구하는 예제입니다. class Person(val name:String, val weight: Double, val height: Double)fun calculateBMI(w: Double, h: Double): Double { val heightInMeters = h / 100.0 return w / (heightInMeters * heightInMeters)}fun determineBMILevel(bmi: Double): String = when { bmi "Underweight" bmi "Normal weight" bmi "Overweight" .. 코틀린 : 2장 테스트에 도전해 보세요( 5번 정답 해설) 문제 5 는 아래 코드에서 함수 isOperatingHours()를 완성하면 됩니다. 수학 문제 풀 때 어떻게 합니까? "이런 문제 유형은 이렇게 풀어야지" 하는 생각이 머리에 떠올라야죠. 코딩도 마찬가지입니다. "머릿 속에 떠올려야 하는 내용들을 중심으로" 순서대로 하나씩 알아보겠습니다. enum class MallInfo(val opens: Int, val closes: Int) { HYUNDAI(10, 20), LOTTE(11, 21), SHINSEGYE(9, 19)}fun main() { println(isOperatingHours(MallInfo.LOTTE, 9)) println(isOperatingHours(MallInfo.HYUNDAI, 21))}fun isOper.. 이전 1 2 3 4 5 6 7 다음