전체 글 (49) 썸네일형 리스트형 코틀린: 인라인(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.. 코틀린 : 2장 테스트에 도전해 보세요 쉽게 다가가는 최신 프로그래밍: 코틀린 - 2장 연산자와 흐름 제어를 완전히 이해했나요? 다음 문제를 풀어 보세요.문제 1 아래 연산 결과는 어떤 값이 나올까요? 그 이유도 설명하세요.fun main() { println(inStringRange("Kotlin")) println(inStringRange("kotlin"))}fun inStringRange(s: String): Boolean { return (s in "Java".."Scalar")} 문제 2 (프로그래밍)String 클래스의 확장 함수로 해당 문자열의 마지막 문자를 가져오는 lastChar()를 정의하세요. 단, String 타입 객체가 널(null)일 수도 있음을 고려해야 합니다. 아래 2개를 테스트 변수로 사용하세요... 코틀린: 연산자 오버로딩(3) - compareTo() 연산자 오버로딩(operator overloading)에 관한 보충 설명입니다. 자세한 내용은 쉽게 다가가는 최신 프로그래밍: 코틀린 - 2.2 연산자 오버로딩을 참고하기 바랍니다. 연산자 오버로딩에서 무심코 지나치면 안되는 내용 중 복합 대입연산자와 equals()에 대해 알아보았습니다. 마지막으로 compareTo()에 대해 알아보겠습니다. ■ Comparable 인터페이스 에서 선언한 추상 메소드 compareTo() compareTo()는 Comparable 인터페이스에서 선언한 추상 메소드입니다. compareTo() 앞에 키워드 operator가 붙었습니다. 즉, compareTo()는 연산자 오버로딩을 위한 추상 메소드입니다. compareTo()는 Int 타입을 반환 합니다. publ.. 코틀린: 연산자 오버로딩(2) - equals() 연산자 오버로딩(operator overloading)에 관한 보충 설명입니다. 자세한 내용은 쉽게 다가가는 최신 프로그래밍: 코틀린 - 2.2 연산자 오버로딩을 참고하기 바랍니다. 연산자 오버로딩에서 무심코 지나치면 안되는 내용 중 복합 대입연산자부터 먼저 알아보았습니다. 이번에는 equals()에 대해 알아보겠습니다. equals()는 연산자 "==" 또는 "!="를 사용했을 때 호출되는 함수입니다. 연산자 오버로딩의 일반적 구문은 "operator fun plusAssign() ..." 이지만, equals()는 특이하게 "override fun equals() ..." 를 사용합니다. 다음에 설명할 compareTo()도 "override fun compareTo() ... "를 사용합니다. ■ .. 코틀린: 연산자 오버로딩(1) - 복합 대입 연산자 이 글은 "Kotlin in Action by Dmitry Jemerov and Svetlana Isakova, Manning(2017)" 중 7.1.2 Overloading compound assignment opertators를 참조해 작성했습니다.연산자 오버로딩(operator overloading)에 관한 보충 설명입니다. 자세한 내용은 쉽게 다가가는 최신 프로그래밍: 코틀린 - 2.2 연산자 오버로딩을 참고하기 바랍니다. 오버로딩과 비슷한 용어로 오버라이딩(overriding)이 있습니다. 오버라이딩은 부모 클래스를 상속받은 자식 클래스에서 부모 클래스의 속성이나 메소드를 재정의하는 것을 말합니다. 오버로딩은 2.plus(3) 과 같이 메소드 plus()를 호출하는 대신 연산자 '+'를 사용해 .. 이전 1 2 3 4 5 6 7 다음