클리엘
CLIEL LAB
클리엘
전체 방문자
오늘
어제
  • 분류 전체보기 (514)
    • Mobile (47)
      • Kotlin (47)
    • Web (84)
      • NestJS (9)
      • HTML5 & CSS3 (38)
      • Javascript (20)
      • TypeScript (6)
      • JQuery (11)
    • .NET (301)
      • C# (84)
      • ASP.NET (67)
      • Windows API for .NET (128)
    • Server (53)
      • SQL Server (10)
      • MariaDB (18)
      • Windows Server (6)
      • node.js (19)
    • System (12)
      • 작업LOG (12)
    • Review (11)
    • ETC (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 블로그 정리

인기 글

태그

  • jQuery
  • ASP.NET
  • asp.net core
  • exception
  • 변수
  • node.js
  • Windows API
  • .NET
  • LINQ
  • CSS3
  • Kotlin
  • android
  • MariaDB
  • Entity Framework
  • android studio
  • JavaScript
  • NestJS
  • c#
  • HTML5
  • asp.net core web api

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
클리엘

CLIEL LAB

[Kotlin] 함수
Mobile/Kotlin

[Kotlin] 함수

2020. 12. 8. 14:18
728x90

Android Studio에서 Kotlin으로 프로젝트를 생성하면 대부분 아래와 같은 구조의 코드로 시작합니다.

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        
    }
}

우리가 주목해야 할 부분은 onCreate입니다. onCreate는 함수이며 MainActivity클래스에 속해 있습니다. 함수라는 것은 프로그램을 구성하는 최소한의 덩어리이며 프로그램을 실행하면서 필요한 처리를 하기 위한 부분이기도 합니다. 참고로 onCreate는 Android가 시작할 때 가장 먼저 호출되는 함수이며 C언에서 main함수와 같습니다.

 

함수는 아래와 같은 방법으로 선언할 수 있습니다.

fun plus(i: Int, j: Int): Int {
    return i + j
}

위 예제에서 plus는 함 수명입니다. 이 함수는 Int형의 값을 2개를 받아 이를 더한 결과를 반환하고 있습니다. Int형의 값을 2개 받는다는 것은 'i: Int, j: Int'로 결정되며 이것을 매개변수 혹은 파라메터라고 합니다.

 

그리고 결과는 역시 같은 Int형인 정수를 반환하고 있으며 이것은 : 다음에 오는 Int로 결정됩니다. 마지막으로 함수의 실행 부분은 {와 } 사이에 작성될 수 있으며 예제에서는 return으로 곧장 i + j의 결과를 반환하는 구문이 작성되어 있습니다.

 

함수는 매개변수를 생략할 수 있으며

fun plus(): Int {
    return 10 + 20
}

값(결과)을 반환하지 않고 내부에서 종결하는 것도 가능합니다.

fun plus() {
    Log.d("test", "plus 함수 본문")
}

함수를 위와 같이 생성하고 나면 '함수명(전달 값...)'의 형태로 함수를 호출해 사용할 수 있습니다.

var r = plus(10,20)
Log.d("test", "결과는 ${r}입니다.")

함수를 호출할 때 매개변수에 전달되는 값이 거의 동일한 경우가 많거나 특정값으로 고정될 수 있을 때는 함수에서 매개변수의 기본값을 정의할 수 있습니다.

fun plus(i: Int, j: Int = 20): Int {
    return i + j
}

이 경우에는 함수를 호출할 때 i에 해당하는 값만 전달할 수 있으며 이때 j의 값은 20으로 처리됩니다.

var r = plus(10)

단, 매개변수가 여러 개일 경우에는 기본적으로 앞에 매개 변수만 기본값을 정의할 수 없으나

fun plus(i: Int = 10, j: Int): Int {
    return i + j
}

함수를 호출할 때 전달할 값을 어느 매개변수로 입력할지를 명확히 지정하는 경우라면 위의 함수의 경우에도 정상적으로 함수를 호출할 수 있습니다.

var r = plus(j = 30)

함수는 경우에 따라 매개변수의 타입뒤에 ?를 사용함으로써 null을 받을 수 있으며 이때는 함수 내부에서 null상황에 대한 확인 구문을 먼저 추가해야 합니다.

fun plus(i: Int = 10, j: Int?): Int {
    if (j == null)
        return i
    else
        return i + j
}

혹은 다음과 같이 ?. 을 사용해 변수의 null상황을 간략하게 확인할 수도 있습니다.

fun plus(i: Int = 10, j: Int?): Int {
    return j?.plus(i)
}

상기 예제에서는 j가 null인 경우 곧장 null을 반환하도록 했으며 null이 아닌 경우에는 i에 더해진 값을 반환하도록 하였습니다.

만약 null인 경우 다른 값 사용을 대체하고자 한다면 ?: 을 사용해 값을 지정할 수 있습니다. 아래 예제는 j가 null인 경우 null대신 20 값을 사용하도록 처리하는 방법을 보여줍니다.

fun plus(i: Int = 10, j: Int?): Int {
    return j?.plus(i)?:20
}

함수가 null을 반환할 수 있는 경우도 마찬가지로 타입뒤에 ?를 사용해 null을 반환할 수 있도록 허용할 수 있습니다.

fun plus(i: Int = 10, j: Int?): Int? {
    if (j == null)
        return null
    else
        return i + j
}

 

728x90
저작자표시 비영리 변경금지 (새창열림)

'Mobile > Kotlin' 카테고리의 다른 글

[Kotlin] 데이터 클래스  (0) 2020.12.09
[Kotlin] 클래스(Class)  (0) 2020.12.09
[Kotlin] 배열과 컬렉션  (0) 2020.12.07
[Kotlin] 반복문  (0) 2020.12.07
[Kotlin] 제어문 - 조건문  (0) 2020.10.01
    'Mobile/Kotlin' 카테고리의 다른 글
    • [Kotlin] 데이터 클래스
    • [Kotlin] 클래스(Class)
    • [Kotlin] 배열과 컬렉션
    • [Kotlin] 반복문
    클리엘
    클리엘
    누구냐 넌?

    티스토리툴바