패키지 사양은 소스파일 상단에 있어야 함.
package my.demo
import kotlin.text.*
fun main() {
println("Hello world")
}
fun main(args: Array<String>) {
println(args.contentToString())
}
print를 통해 출력
println은 줄바꿈
readln() 함수로 읽어옴
fun sum(a: Int, b: Int): Int{
return a + b
}
단일 함수식
fun sum(a: Int, b: Int) = a + b
특정 값이 없이 리턴 할 수 있음. (Unit)은 생략 가능
fun printSum(a: Int, b: Int): Unit {
println("sum of $a and $b is ${a + b}")
}
val 불변성 - 읽기 전용
var 가변성 - 읽기, 쓰기 가능
class Shape
프로퍼티는 본문이나 선언에 작성
class Rectangle(val height: Double, val length: Double) {
val perimeter = (height + length) * 2
}
Class 선언할 때 나열 된 파라미터가 있는 기본 생성자들은 자동 생성 된다.
class Rectangle(val height: Double, val length: Double) {
val perimeter = (height + length) * 2
}
fun main() {
val rectangle = Rectangle(5.0, 2.0)
println("The perimeter is ${rectangle.perimeter}")
}
상속은 : 뒤에 작성해야하고 상속을 하기위해 open을 적어야함.
open class Shape
class Rectangle(val height: Double, val length: Double): Shape() {
val perimeter = (height + length) * 2
}
var a = 1
val s1 = "a is $a"
a = 2
val s2 = "${s1.replace("is", "was")}, but now is $a"
fun maxOf(a: Int, b: Int): Int{
if (a>b) {
return a
} else {
return b
}
}
if 는 표현식으로 사용가능
fun maxOf(a: Int, b: Int) = if (a > b) a else b
val items = listOf("apple", "banana", "kiwifruit")
for (item in items) {
println(item)
}
or
val items = listOf("apple", "banana", "kiwifruit")
for (index in items.indices) {
println("item at $index is ${items[index]}")
}
val items = listOf("apple", "banana", "kiwifruit")
var index = 0
while (index < items.size) {
println("item at $index is ${items[index]}")
index++
}
fun describe(obj: Any): String =
when (obj) {
1 -> "One"
"Hello" -> "Greeting"
is Long -> "Long"
!is String -> "Not a string"
else -> "Unknown"
}