일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- FLUTTER
- ultra edit ftp account
- 울트라펄스
- 프락셀
- vue framework
- css
- JavaScript
- 프락셀딱지
- 다음API
- es6
- 셀라스
- 코틀린
- 레이저토닝
- 퀘이사프레임워크
- 뷰프레임워크
- 울트라에디터 헥사
- 실펌레이저
- 울트라에디터 ftp
- 자바스크립트
- 자료형
- 헬리오스
- 다음우편번호
- 피부과
- 토닝
- 불마
- 우편번호API
- 플러터
- 물광주사
- 울트라에디터
- Kotlin
- Today
- Total
클로스트 이야기
[Kotlin] 함수와 Nullable 본문
오늘은 Kotlin 언어의 함수와 nullable 에 대해 알아 보겠습니다.
함수는 여타 다른 언어들과 크게 다르지 않고 모양만 약간 다릅니다.
함수
package com.example.myapplication
fun main() {
sayHello() // Hello~
println(addNumber(5,3)) // 8
println(avgNumber(3.2,5.3)) // 4.25
}
fun sayHello(){
println("Hello~")
}
fun addNumber(a: Int, b: Int): Int{
return (a+b)
}
fun avgNumber(a: Double, b: Double): Double {
return (a + b)/2
}
위와 같이 선언하고 실행합니다. 다른 언어와 차이점은 리턴 타입을 오른쪽에 적는다는 것 정도입니다. 파라미터 타입을 정해 주고 리턴 타입도 정해주면 정해준 타입대로 리턴하여야 하고, 리턴타입이 void라면 생략하면 됩니다.
Nullable
코틀린에서는 기본적으로 변수를 선언하면 초기화를 해야 합니다. 이렇게 되면 기본적으로 해당 변수의 타입은 non-null 타입입니다. null을 저장하고 싶다면 nullable 변수로 선언해야 합니다.
var name: String = "alice" // Regular initialization means non-null by default
name = null // compilation error
var nullableName: String? = "bob" // can be set to null
nullableName = null // ok
print(nullableName) // null
nullable 변수로 선언하면 null 이 할당 가능해집니다. 여기서 String 전용 메소드를 실행하게 되면 에러가 나게 되고 이는 null이 될수 있기 때문입니다. 에러가 안나게 하려면 ? 를 추가해주면 되고 에러는 사라지게 됩니다.
var nullableName: String? = "Chris"
nullableName = null // Works
// nullableName.length // error
println(nullableName?.length) // null
safe call
null이 아닐때만 실행하는걸 보장하기 위한 오퍼레이터입니. let과 함께 쓰고 null이 아니면 it으로 해당 메소드를 호출합니다.
val nullableName: String? = null
nullableName?.let { println(it.toLowerCase()) }
nullableName?.let { println(it.length) }
elvis operator
자바스크립트의 || 패턴과 비슷하고, 플러터의 ?? 와 비슷한 문법입니다. 해당변수가 null 일때 세팅될 값을 세팅합니다.
val nullableName: String? = null
// val nameLen: Int = if (nullableName != null) nullableName.length else -1
val nameLen = nullableName?.length ?: -1
println(nameLen) // -1
위를 보면 if 문으로 null을 체크하여 하는 구식방식은 주석처리 되어있고, elvis 연산자를 이용하여 쓰면 단축하여 그 아래 처럼 쓸 수 있습니다.
!! operator
!! 연산자는 nullable 타입을 non-null 타입으로 변환 시킵니다. 그리고 null 이라면 NullPointException 을 던지게 됩니다. 따라서 이연산자를 쓸때는 null 이 아니라는 확신이 있을때 쓰면 됩니다.
val nullableName: String? = null
nullableName!!.toLowerCase() // NullPointerException
'개발이야기 > Kotlin' 카테고리의 다른 글
[Kotlin] 조건문과 반복문 (0) | 2021.12.19 |
---|---|
[Kotlin] 연산자 와 When 표현식 (0) | 2021.12.11 |
[Kotlin] 자료형 과 변수 (0) | 2021.11.30 |