코틀린 공부 day1

선언

val : immutable; 상수의 값
var : mutable; 변수의 값
코틀린은 특이한 점이 변수의 선언과 같이 정의(초기화)해주어야 한다. 안하면 컴파일X
lateinit var : 변경 가능한 변수, 초기화는 런타임으로 미룸

자료형(null)

변수가 null인거에 접근하면 null예외처리를 해주어야한다. 코틀린은 변수가 null이 될수 있는지 아닌지를 명시하기 위해 ?사용

var a: String = "선호" //null이 될 수 없는 a라는 변수이다.
var b: String? = "재원" 
b=null //b라는 변수는 null이 될 수 있는 변수이기에 오류가 안난다.
var l = b.length // 오류 뜸 왜? b라는 변수는 null이 될 수 있기에 
var k= b?.length // b가 null이 아니면 length의 값을 k에 넣고 null이면 무시

chain 작용하며 사용 가능하다. 예를 들어, b는 재원이는 사람일수있고 그 사람은 안경쓸수 있다. 그 안경의 이름을 가져오도록 하려면?

b?.person?.glasses?.name

Elvis Operator

val l:Int = if (b!=null) b.length else -1

if문을 사용하는 대신 앨비스 연산자인 ?: 을 이용하여 쓸수 있다.
왼쪽의 객체가 null이 아니라면 그값을 리턴하고 null 이면 뒤에값 리턴

val l = b?.length ?: -1

엘비스 예제

fun foo(node: Node): String?{
   val parnet = node.getParent() ?: return null //node.getParent가 null이면 리턴 null
   val name = node.getName() ?: throw Exception // null이면 에러발생
   

리스트

코틀린은 리스트에서도 변경가능한지를 중요시함

리스트에 쓰기(추가, 제거) 가능하면 변경가능리스트!!

Collection에서도 MutableCollection<T>와 Collection<T>로나눔.
그냥 Collection은 변경불가! mutable만 가능

val AList: List<int> =listof(1,2,3)  // 불변형식임
AList.add(4) //컴파일에러
val BList: MutableList<Int> = mutableListOf(1,2,3) //변경가능
BList.add(4)
print(BList) //=>[1,2,3,4]

Map

key-value형식. 마찬가지로 mutable형식과 아닌형식이 있음

val nummap=mutableMapOf("one" to 1, "two" to 2)
nummap.put("three", 3)
nummap["one"]=11
println(nummap) // =>{one=11,two=2,three=3}

좋은 웹페이지 즐겨찾기