본문 바로가기

언어23

[Kotlin 문법 종합] - Single-expression function, 싱글턴 (@@질문하기) 1. Single-expression function : 람다식을 이용해 메소드를 간결하게 정리 가능 * 람다식 구조 : 다른 함수의 인자로 넘김 / 함수의 결과값으로 반환 / 변수에 저장 하는 함수 {매개변수1, 매개변수2... -> 코드 } * 예시 1 : 세 개의 숫자를 받아 평균을 반환하는 함수(를 람다식으로 정의) fun add(num1:Int, num2:Int, num3:Int) = (num1+num2+num3)/3 fun main(){ println(lambdaExample({x,y -> x+y}, 20, 30)) //람다식 함수를 인자로 넘김 } fun lambdaExample(sum: (Int, Int) -> Int, a: Int, b: Int): Int = sum(a, b) //위와 동.. 2024. 3. 6.
[Kotlin 문법 종합] - 널 세이프티 @@수정하기 1. 널 세이프티 : Null 예외로부터 안전한 설계를 위해 자료형에 Null 여부를 명시 ?, !!, ?. , ?: 1) ? null 할당 허용 기호 * null 허용 여부에 따라 String과 String? 는 서로 다른 자료형임 // null을 저장하지 않고 설계하려면 lateinit var 로 대체할 수 있음 { println("이름을 입력해주세요") while(true) { try { var originName = readLine() if(originName?.first() != '_' && originName?.first() != '!') { //.first()는 첫번째 인자 반환 return originName } else { println("이름을 다시 입력해주세요") } } catch(e.. 2024. 3. 6.
[Kotlin 문법 종합] - 지연 초기화 (@@0313 추가중~) 1. 지연 초기화 : 클래스 설계 시 초기의 값 설정하기 애매할 때, 나중에 대입 (+) 메모리의 효율적인 사용 1) 변수 --> lateinit - isInitialized --> 변수 사용 전, 초기화되었는지 확인해 true/false 반환 ( !::name.isInitialized) - 값이 아니라 참조형태로 사용해야 하기에 this::~ 또는 :: 붙임 // var에만 사용 가능, 프로퍼티에 대한 게터, 세터를 사용할 수 없음(초기화된 뒤에는 수정 가능하긴 한 듯) fun main(){ var s1 = Student() s1.name = "참새" //이 때 초기화됨 s1.displayInfo() s1.age = 10 s1.displayInfo() } class Student { lateinit v.. 2024. 3. 6.