Kotlin | 함수 & 변수 & 문자열 템플릿 & 클래스 & 프로퍼티

DoItDev·2021년 8월 7일
0
post-thumbnail

함수&변수

함수

package base

fun main(args: Array<String>) {
    var str = "test ... !!"
    toPrintTest(str)
    println("MAX Value " + max(10, 5))
    println("MIN Value " + min(10, 5))
}

//[2]
fun toPrintTest(str: String) {
    println("funtion test sucess >> " + str)
}

//[3]
fun max(num1: Int, num2: Int): Int {
    return if (num1 < num2) num2 else num1
}

//[4]
fun min(num1: Int, num2: Int) = if (num1 < num2) num1 else num2

함수는 fun 키워드로 만들 수 있다.
fun 다음에 함수 이름 위치를 시킨다.
() 안에는 인자를 넣어 준다. ,(콜론) 으로 으로 구분을 해준다.
[3] 본문의 경우 블록이 본문이 함수 (중괄호로 본문을 둘러싼다)
[4] 식이 본문인 함수로 두가지 된다 (줄괄호 대신에 등호와 식)

스크린샷 2021-08-07 오전 11 23 30

변수

package base

fun main(args: Array<String>) {
    var str = "test" //[1]
    val numOfTemp: Int = 0 //[2]
    val answer3: Int //[3]
    answer3 = 40 
}

[1] 타입 생략 가능하다. 컴파일러가 초기화 식을 이용 유추 가능하다.
[2] 타입을 지정이 가능다.
[3] 초기화 식이 없으면 반드시 타입을 명시한다.

val vs var

val 초기에 값을 할당 받으면 변하지 않는 값
var 초기에 값을 받건 말건 변하는 값

문자열 템플릿

package base

fun main(args: Array<String>) {
    var name  : String = "Hello"
    println("test sucess")
    println("test sucess $name")
    println("test sucess ${name}")
}

$ 바로 뒤에 변수를 사용하는 방법
${} 중괄호 안에 변수를 넣는 방법

스크린샷 2021-08-07 오전 11 24 37

클래스 & 프로퍼티

클래스

코틀린에서 기본으로 클레스 작성법

class Person (val str : String)

fun main(args: Array<String>) {
    var person = Person("Test...")
    println(person.str)
}
스크린샷 2021-08-07 오전 11 20 16

프로포티

프로퍼티를 기본 언어 기능으로 제공하며 자바의 필드와 접근자 메서드를 완전히 대신함

class Person( 
val name: String, // 읽기 전용(val) 프로퍼티 
var isMarried: Boolean // 변경 가능(var) 프로퍼티 
) 
Person p = Person("Bob", false) 
println(p.name) 
println(p.isMarried) 
p.isMarried = true 

프로퍼티의 자바 표현

기본적으로 코틀린은 프로퍼티에 대해 다음을 생성

  • 읽기 전용 프로퍼티: 비공개 필드와 필드를 읽는 공개 게터 생성
  • 쓸 수 있는 프로퍼티: 비공개 필드와 공개 게터, 공개 세터 생성
    프로퍼티 이름이 is로 시작할 경우
    프로퍼티 이름과 동일한 게터 생성: 예, isMarried﴾﴿﴿
    is 대신에 set을 사용하는 세터 생성: 예, setMarried﴾﴿
    지원﴾backing﴿ 필드: 프로퍼티의 값을 저장하기 위한 비공개 필드

커스텀 접근자

class Rectanble(val height: Int, val width: Int) { 
val isSquare: Boolean 
get() { // 프로퍼티 게터 선언, 블록 사용 
return height == width; 
} 
val size: Int 
get() = height * width // 식 사용 
} 

잠깐!! 소스코드 구조

파일의 맨 앞에 package 문 사용해서 패키지 지정
파일의 모든 선언﴾클래스, 함수, 프로퍼티 등﴿이 해당 패키지에 속함
디렉토리 구조와 패키지 구조가 일치할 필요 없음 ﴾하지만, 패키지별로 디렉토리 구성이 나 음﴿
같은 패키지에 속해 있다면 다른 파일에서 임포트 없이 정의한 선언 사용 가능 다른 패키지에서 사용하려면 import 키워드로 사용할 선언을 임포트

profile
Back-End Engineer

0개의 댓글