코틀린에서는 자바의 if, switch와 비슷한 if, when이 조건문을 표현한다. 📕if문 if문을 사용하면 불(boolean) 식의 결과에 따라 두 가지 대안 중 하나를 선택할 수 있다. 코틀린 if는 자바 if 문과 비슷한 문법을 제공한다. fun max(a:Int, b:Int):Int{ if(a>b) return a else return b } 조건이 참일 때 첫 번째 문장을 실행하고, 조건이 거짓일 때 else 문을 실행한다. 만약 조건이 거짓일 때 아무 일도 하지 않아도 된다면 else문을 생략해도 된다. ⚡조건은 항상 Boolean타입의 식이어야 한다! 💡자바의 if와 코틀린의 if의 차이 코틀린은 자바와 다르게 if를 식으로 사용할 수 있다는 것이다. if 식을 사용하면 max 함수를 더..
Skils/Kotlin
코틀린 공부자바와 마찬가지로 코틀린도 가변 인자를 지원한다. 가변 인자를 사용하면 함수를 호출할 때 인자의 개수를 자유롭게 지정할 수 있다. 사용하려면 파리 미터 앞에 vararg를 붙이면 된다. fun printSort(vararg items:Int){ items.sort() println(items.contentToString()) } fun main(){ printSort(1) // [1] printSort(1,4,3,2) // [1,2,3,4] } 위에서 보듯이 vararg를 items 앞에 붙여주니 인자의 개수를 마음대로 사용하고 적절한 배열 타입으로 사용할 수 있다. 💡스프레드(spread)연산자인 *를 사용하면 배열을 가변 인자 대신 넘길 수 있다. fun printSort(vararg items:In..
🔎오버 로딩 이름이 같은 함수를 여러 개 작성할 수 있는 기능 🛑주의할 점 컴파일러가 어떤 함수를 호출해야 할지 구분할 수 있도록 오버 로딩한 함수의 파라미터 타입을 구분해줘야 한다. ⭕예를 들어 다음 두 함수는 올바른 오버 로딩을 구성한다. fun readInt()= readLine()!!.toInt() fun readInt(radix : Int)= readLine()!!.toInt(radix) ❌다음 두 함수는 컴파일 오류가 발생한다. 왜일까? 두 함수는 반환 값만 다르고 파라미터의 타입은 같기 때문에 컴파일 오류가 발생하는 것이다! 이렇게 컴파일러는 다음과 같은 오버 로딩 해소 규칙을 따른다. 파라미터의 개수와 타입을 기준으로 호출할 수 있는 모든 함수를 찾는다. 덜 구체적인 함수를 제외시킨다. 규..
🔎함수 : 입력(파라미터)을 받아서 자신을 호출한 코드 쪽에 출력 값을 반환할 수 있는 재사용 가능한 코드 블록이다. 아래 사진은 원의 넓이를 구하는 함수이다. 위 사진을 세세하게 뜯어본다면 fun은 함수라는 뜻이고 뒤에 정의가 뒤따라온다. circleArea는 함수의 이름이다. 괄호로 둘러싸여 있는 (radius : Double)은 파라미터 목록이고, 파라미터의 타입을 명시해주면서, 함수를 호출할 때 넘길 수 있는 데이터를 컴파일러에게 알려준다. Double은 반환타입이다. 함수 본문은 {}로 둘러싸여 있는 블록이며 함수의 구현을 기술한다. 🛑함수가 파라미터를 받지 않는다고 해도 파라미터를 감싸는 괄호는 있어야 한다. 코틀린 함수의 파라미터는 무조건 불변이다. 즉 함수 내부에서 변경하지 못한다. 따라서..
이번 글에서는 코틀린에서의 배열에 대해 알아볼 것이다. 배열구조를 구현하는 가장 일반적인 코틀린 타입은 Array 이다. val a= emptyArray() //Array원소 0개 val b = arrayOf("Hello", "world") //Array 원소 2개 val c= arrayOf(1,4,9)//Array 원소 3개 호출할 때 원소의 타입을 따로 지정하지 않아도 타입 추론 덕분에 함수 호출의 인자 타입을 알아낼 수 있다. 인덱스를 사용해서 배열의 원소를 만들어내는 방법도 있다. val size= readLine()!!.toInt() //null값이 입력된다면 null을 반환해줘라. val s= Array(size){(it+1) *(it+1)} //각 배열의 인덱스에 (인덱스+1)^2값이 들어가..
이번 글에서는 수, 문자, 불, 값 등을 표현하는 코틀린 타입을 소개할 것이다. 책을 읽어본 결과 정수타입과 bit타입은 내가 사용하는 C++과 크게 다르지 않았지만, 문자에 관해서는 확실히 코틀린이 편리한 기능이 많았다. 📕문자타입 char 새 줄 문자와 같은 특수 문자를 위해 코틀린은 이스케이프를 제공한다. \t : tab \b : 백스페이스 \n : 새줄 \r : 캐리지 리턴 \' : 작은따옴표, \" : 큰 따옴표 \\는 역 슬래쉬 \$ : 달러 표시 내부에서 char 값은 그냥 문자 코드일 뿐이지만, 코틀린은 char 자체를 수 타입으로 취급하지는 않는다. 하지만 유니코드 문자 집합 내에서의 몇 가지 산술 연산을 허용한다. 다음은 char로 할 수 있는 연산이다. +/- 연산자를 사용해 ..
1. 주석처리 힌줄짜리 주석 : //로 시작하여 줄이 끝나면 주석도 끝난다. 여러 줄 주석 : /*로 시작하고 */로 끝난다. KDoc 여러 줄 주석 : /**로 시작하고 */로 끝난다. 자바와 달리 코틀린에서는 여러 줄 주석을 내포시킬 수 있다. 2. 변수 정의하기 val timeInSeconds = 15 val 키워드 : 값을 뜻하는 value에서 유래했다. 변수 식별자 : 새 변수에 이름을 부여하고, 나중에 이를 가리킬 때 사용한다. 변수의 초깃값을 정의하는 식 : = 기호 뒤에 온다. 💡자바와 다른 점 변수 정의 뒤에 세미콜론(;)을 붙이지 않았다. 코틀린에서는 줄 끝에 새미 콜론을 생략해도 된다. 📕타입 추론 대부분의 경우 컴파일러가 코드의 문맥에서 타입을 도출해주는 언어 기능. ->코틀린은 강..
코틀린이 진화해 오면서 소프트웨어 개발의 거의 모든 측면에 대한 풍부한 라이브러리와 프레임워크가 만들어졌다. 이번 글에서는 코틀린의 사용 가능한 도구를 전반적으로 설명할 예정이다. 1.코루틴 일시 중단 가능한 계산이라는 개념 덕분에 코틀린은 async/await, 퓨처(future), 프라미스(promise), 액터(actor)등의 동시성 관련 프로그래밍 패턴을 지원할 수 있다. 코 루틴 프레임워크는 서버 쪽이거나 모바일, 데스크톱을 위한 것인지와 관계없이 코틀린 애플리케이션에서 동시성 문제를 해결할 수 있는 강력하고 우아하며 쉽게 확장 가능한 해법을 제공한다. 스레드에 대한 거 가벼운 대안 유연한 스레드 디스패치 메커니즘 일시 중단 가능한 시퀀스와 이터레이터 채널을 사용한 메모리 공유 액터를 통해 메시..
내가 이번 방학에 공부하기로 한 언어는 kotlin [코틀린]이다. 보통 애플리케이션을 개발할 때 사용하는 언어이고 훌륭하고 효율적인 언어로 평가받는다. 코틀린은 안전성, 간결성, 상호 윤용성을 강조하는 다중 패러다임, 다중 플랫폼 프로그래밍 언어다. 📕코틀린의 장점 1. 안전성 프로그래밍 언어가 안전하려면 프로그래머의 오류를 방지할 수 있어야 한다. 실전에서 오류를 방지하려면 대가가 필요하기 때문에 안전성을 고려해 언어를 설계하는 것은 트레이드오프의 문제이다. 코틀린의 설계 목표 중 하나는 황금비를 찾아내는 것이었다. 즉 자바보다 더 안전성을 보장하는 언어를 설계하되, 개발자의 생산성을 덜 해치는 언어를 만드는 것이다. 타입 추론으로 인해 개발자가 명시적으로 지정하지 않아도 된다 날이 될 수 있는 타입..