전체 글
-
[프로그래머스] 위장 (Kotlin)문제풀이/프로그래머스 2021. 6. 28. 15:20
https://programmers.co.kr/learn/courses/30/lessons/42578?language=kotlin 코딩테스트 연습 - 위장 programmers.co.kr 내 풀이 풀이(1) class Solution { fun solution(clothes: Array): Int { var answer = 1 val sep = HashMap() for (cloth in clothes) { sep[cloth[1]]?.let { sep.put(cloth[1], it + 1) } ?: sep.put(cloth[1], 1) } for (i in sep) { answer *= (i.value + 1) } return (answer - 1) } } ※ let 함수란? 💡 [Kotlin/코틀린] l..
-
💡 [Kotlin/코틀린] let 함수가 뭐죠?| 프로그래밍 분야/Kotlin 2021. 6. 28. 15:19
let 함수의 정의 fun T.let(block: (T) -> R): R let 함수는 타입 T의 확장함수입니다. ※ 타입 T란? 따라서 모든 타입의 객체에 Chain Method(점(.)으로 이어나가는) 방식으로 사용할 수 있습니다. 반환 타입도 참조형 타입 R로 선언되어, 어떤 타입도 반환 타입도 가질 수 있으며, 반환값을 갖지 않을 수도 있습니다. (참조형 타입에 대한 설명은 위 링크에서 확인하실 수 있습니다.) let 함수의 특징 및 용례 let 함수는 람다식으로 중괄호를 채워 이용합니다. let 함수는 스스로의 객체를 인자로 받아 사용합니다. 또한, 중괄호 내부에서 해당 객체를 it 키워드로 호출할 수 있습니다. fun main() { val a:String = "m" // 먼저, let 함수를..
-
💡 [자바/코틀린] 제네릭? 타입 T? 자세히 알려주세요| 프로그래밍 분야/Kotlin 2021. 6. 28. 13:31
제네릭(generic)이란? 제네릭은 generalize, 즉 "일반화하다"에서 나온 개념입니다. 즉, 데이터의 타입을 일반화한다는 것을 의미합니다. 제네릭을 통해 클래스나 메서드에서 사용할 내부 데이터 타입을 컴파일 타임에 미리 지정하는 방법입니다. 이를 통한 장점은 크게 세 가지로 나뉩니다. 1. 객체의 타입 안정성 증가 2. 반환값에 대한 타입 변환 및 타입 검사 x 3. 모든 객체에 대한 확장성 기존의 방식 JDK 1.5 이전에서는 여러 타입을 사용하는 클래스나 메소드에서 인수나 반환값으로 최상위 객체인 Object 타입을 사용했습니다. 이 때 Object 객체를 다시 원하는 타입으로 변환해야 하며, 오류가 발생할 가능성도 존재합니다. 하지만 JDK 1.5부터 도입된 제네릭은 컴파일 시에 미리 타..
-
💡 [안드로이드/코틀린] lateinit var 초기화(할당) 여부 확인법| 프로그래밍 분야/Kotlin 2021. 6. 28. 09:02
"::변수명.isInitialized"로 확인이 가능합니다. (예시) private lateinit var sample:String fun main() { for (i in 1..2) { if (::sample.isInitialized) { sample = "이미 할당되었다면 이 문구로 재할당됨" } else { sample = "할당된 적이 없다면 이 문구로 할당됨" } println(sample) } } (출력 화면) 더블 콜론(::)은 리플렉션(reflection)을 위해 사용되며, 보통 "클래스명::class"로 사용되고, 액티비티를 넘겨주어 단말에서 사용할 필요가 있을 때에는 "클래스명::class.java"로 사용합니다. 참조 다만 변수 앞에 쓰인 더블 콜론(::)은 변수를 객체로 액세스하여 ..