본문
170410(월) - Kotiln-docs (Basic Syntax)
Kotlin-docs
Udemy kotiln 과정은 기초였다.
공식 Docs로 복습하는셈 치고 정리한다.
Basic Syntax
함수
- 리턴 타입 유추
fun sum(a: Int, b: Int) = a + b
- Unit-returning functions
함수가 제대로된 값을 리턴하지 않았을 때, 리턴 타입은 Unit이다.
Unit 사용시 return을 명시적으로 하지 않아도 된다.
fun printSum(a: Int, b: Int): Unit {
print(a + b)
// return Unit or return is optional
}
리턴타입 생략 가능
fun printSum(a: Int, b: Int) {
print(a + b)
}
local variables 정의
- Assign-once (read-only)
val a: Int = 1
val b = 1
val c: Int
c = 1
- Mutable
var x = 5
x += 1
String templates
fun main(args: Array<String>) {
if (args.size == 0) return
print("First arg : ${args[0]}")
}
val i = 10
val s = "i = $i"
val s = "abc"
val str = "$s.length is ${s.length}"
$문자를 사용하고 싶으면 '$' (작은따옴표) 사용
back slash(\) 사용은 소용 없다.
val price = """ ${'$'}9.99 """
Conditional expressions
코틀린의 if는 값을 리턴 가능하다.
그러므로 ternary operator(삼항연산자) 는 없음.
if문이 역할을 대신함.
fun max(a: Int, b: Int): Int {
if (a > b) {
return a
} else {
return b
}
}
fun max(a: Int, b: Int) = if (a > b) a else b
// traditional
var max = a
if (a < b) max = b
var max: Int
if (a > b) {
max = a
} else {
max = b
}
// As expression
val max = if (a > b) a else b
if 문이 block으로 구성되면 마지막 expression이 그 block의 값이 된다.
val max = if (a > b) {
print("choose a")
a
} else {
print("choose b")
b
}
Using nullable values and Checking for null
null value가 들어올 수 있으면, explicitly하게 nullable을 표시해줘야 한다.
Integer가 리턴되지 않는다.
fun parseInt(str: String): Int? {
//...
}
코틀린의 타입 시스템은 위험한 null refreence를 제거하는것에 목표를 두고 있다.
즉, NullPointerException 이 나지않게 하는것이 궁극적인 목표다.
코틀린은
- nullable references
- non-null references
를 구별한다.
var a: String = "abc"
a = null // compilation error!
// nullable 처리
var b: String? = "abc"
b = null
여기서 b.length 를 호출하게 되면 컴파일러는 error를 뱉어낸다.
그래서 필요한게 Safe calls 다.
Safe Calls
?. operator를 사용해서 safe call을 한다.
b?.length
- b 가 null이 아닐경우에 b.length를 반환
- null이면 null 리턴
chain 식의 호출에 매우 유용하다.
with "let"
val listWithNulls: List<String?> = listOf("A", null)
for (item in listWithNulls) {
item?.let {
// it -> println(it) 생략된것 같다.
println(it)
}
}
Type checks 및 Automatic casts
fun getStringLength(obj: Any): Int? {
if (obj !is String) return null
// obj is automatically cast String
return obj.length
}
fun getStringLength(obj: Any): Int? {
// obj is automatically cast to String on the right-hand side of '&&'
if (obj is String && obj.length > 0) {
return obj.length
}
return null
}
'Mobile > Kotlin' 카테고리의 다른 글
170607(수) - Kotlin docs (Basic Types) (0) | 2017.05.31 |
---|---|
170530(화) - Kotlin docs(Coding Conventions) (0) | 2017.05.30 |
170529(월) - Kotlin docs (Idioms) (0) | 2017.05.29 |
170417(월) - Kotlin docs (Basic Syntax) (0) | 2017.04.17 |
161118(금) (0) | 2016.11.18 |
댓글