728x90
함수(Function)
fun main() {
println("Hello World")
}
fun add(a: Int, b:Int): Int {
return a + b
}
- 코틀린에서의 함수는 "fun"이라는 키워드로 정리한다.
- 파라미터는 이름 -> 타입 순으로 쓴다.
- 함수의 파라미터가 없을 때에는 빈 괄호인 상태이다.
- 함수의 파라미터는 이름을 입력한 후 콜론(:) 뒤에 타입을 입력한다.
- 함수의 파라미터가 두 개 이상일 시 콤마(,)로 구분한다.
- 코틀린에서의 함수는 최상위 수준에 속하므로 클래스 안에 함수를 넣을 필요가 없다.
- return 타입은 함수 이름 뒤에 정의한다.
볼록문이 본문인 함수
본문이 중괄호({ })로 묶인 함수를 블록문이 본문인 함수라고 한다.
fun divide(a: Int, b: Int) {
return a / b
}
식이 본문인 함수
등호와 식으로 이루어진 함수를 식이 본문인 함수라고 하며, 마지막에 나온 값이 return값이 된다.
블록문이 본문인 함수에서 함수의 본문이 식 하나로 이뤄져 있다면 식이 본문인 함수로 표현할 수 있다.
코틀린은 루프를 제외한 대부분의 제어구조가 식이기 때문에 if, when, try, while 등 식으로 표현이 가능하다.
fun add(a: Int, b:Int): Int = a + b
fun max(a: Int, b: Int): Int = if(a > b) a else b
코틀린은 컴파일러가 식을 분석할 수 있어 타입 추론이 가능하여 반환 타입은 생략이 가능하다
fun add(a: Int, b: Int) = a + b
변수(Variable)
코틀린에서의 변수 선언은 두가지의 키워드가 있다.
val
- 불변타입변수(immutable type)로 초기에 할당한 값을 변경할 수 없다.(java의 final함수와 동일)
- val변수가 한번만 초기화되는 것이라면 상황에 따라 다른 값을 할당할 수 있다.
- 컴파일러에서 타입 추론이 가능할 경우 생략 가능하다.
val name = "James"
// 위에서 이미 name에 값이 할당되었기 때문에 아래 코드처럼 값 할당이 불가능하다.(컴파일 에러 발생)
name = "David"
val count: Int = 3; // 타입추론이 가능하므로 val count = 3으로 생략 가능
val winner: String
if(win()) winner = "James"
else winner = "David"
var
- 가변타입변수(mutable type)로 초기화 후 값을 변경할 수 있다.
- 다른 타입의 값으로 변경할 수는 없지만 자바와 같이 형 변환을 통해 타입 변경이 가능하다.
var grade = "F"
grade = "A"
println(var) // A
grade = 1 //기존에 String타입이었으므로 Int의 값을 넣으려면 형변환을 해줘야한다.
문자열템플릿(String Template)
문자열템플릿을 통해 자바보다 간편하게 원하는 문자열을 생성 가능하다.
//java
String name = "James";
String grade = "A+";
System.out.println(name + "grade : " + grade); // James grade : A+
//python
val name = "James"
var grade = "A+"
println("$name grade : $grade") // James grade : A+
자바와 같이 +연산을 사용하지 않아도 " "안에서 $기호로 시작하는 식이나 변수는 자동으로 문자열과 연결된다.
주의할 점)
$변수명 바로 뒤에 문자를 입력하는 경우 온점(.), 쉼표(,), 공백( )이 나오기까지 변수명으로 인식된다.
이때 변수명을 중괄호({ })로 감싸 해결할 수 있다.
val name = "James"
val grade = "A+"
println("$name grade : $grade입니다.") // grade입니다를 변수명으로 인식하여 오류가 난다.
println("$name grade : ${grade}입니다.") // 변수명을 중괄호({ })로 감싸주어 정상 작동한다.
문자열 템플릿은 식(expression)으로 중괄호 안에 있는 연산과 함수 호출도 가능하다.
fun main() {
val radius = 2;
println("사각형의 넓이 : ${SquareArea(radius)}")
}
fun squareArea(a: Int) = a*a
728x90
'Programming > Kotlin' 카테고리의 다른 글
코틀린(Kotlin) - 문자열과 정규식 (0) | 2021.09.25 |
---|---|
코틀린(Kotlin) - 함수 정의와 호출 (0) | 2021.09.25 |
코틀린(Kotlin) - 예외 처리 (0) | 2021.09.19 |
코틀린(Kotlin) - enum, 제어문(if, when, while, for) (0) | 2021.09.19 |
코틀린(Kotlin) - 클래스(Class)와 프로퍼티(Property) (0) | 2021.09.17 |
댓글