👀배울 내용 요약 코틀린 언어는 함수형 패러다임을 지원하는 기능이 있습니다. 함수형 프로그래밍은 프로그램 코드를 불변 값을 변환하는 함수의 합성으로 구성할 수 있다는 아이디어를 바탕으로 합니다. 함수형 언어는 함수를 first class 값으로 취급합니다. -> 함수를 다른 일반적인 타입의 값과 똑같이 취급한다는 뜻입니다. first class는 변수에 값을 대입하거나 변수에서 값을 읽을 수 있고 함수에 값을 전달하거나 함수가 값을 반환할 수 있다는 의미입니다. 이러한 성질은 함수인 값을 데이터와 마찬가지로 조작할 수 있는 고차 함수라는 함수를 저의 할 수 있게 해 주며, 코드 추상화와 합성이 더 쉽게 가능한 유연성을 제공해 준다고 합니다. 📕고차함수 fun aggregate(numbers: IntArr..
👀학습목표 객채 선언의 정의 객채 선언의 의미와 객체 선언을 통한 싱글톤 자바 익명 클래스와 비슷한 객체 식 📕객체 선언 코틀린은 어떤 클래스에 인스턴스가 오직 하나만 존재하게 보장하는 싱글턴 패턴을 내장하고 있다. 싱글턴의 선언 방법은 클래스와 비슷한 방법으로 선언한다. [class 대신 object라는 키워드 사용] import java.io.* object Application { val name="My application" override fun toString()=name fun exit(){} } fun describe(app:Application)=app.name //Application은 타입임. fun main(){ println(Application) //Application은 값임...
👀학습목표 앞에서 배운 내용을 토대로는 프로퍼티는 어떤 클래스 인스턴스나 파일 퍼사드에 묶인 변수이며, 자바 필드와 비슷하다고 설명했다. 하지만 일반적으로 코틀린 프로퍼티는 일반 변수를 넘어서, 프로퍼티 값을 읽거나 쓰는 법을 제어할 수 있는 훨씬 더 다양한 기능을 제공한다. 이번 글에서는 단순하지 않은 프로퍼티의 의미에 대해서 다룰것이다. 👀학습하기 전에 알면 도움 되는 용어 정리 필드(field) : 클래스 멤버 변수 프로퍼티(Property) : 필드와 게터 세터를 한 번에 묶어서 부르는 단어 📕최상위 프로퍼티 클래스나 함수와 마찬가지로 최상위 수준에 프로퍼티를 정의할 수 있다. 이런 경우 프로퍼티는 전역 변수나 상수와 비슷한 역할을 한다. import kotlin.* val prefix="Hell..
📕Null 참조 값 중에서 아무것도 참조하지 않는 경우를 나타내는 특별한 참조값들 여기서 참조는 어떤 할당된 객체도 가리키지 않는 참조를 뜻한다. 다른 참조와 비슷하게 동작하지 않는다. 🔎자바 vs 코틀린 💻자바 모든 참조 타입의 변수에 널을 대입할 수 있지만, 이때 이 참조 타입(하지만 값은 널)에 정의된 메서드나 프로터 리를 사용하려고 하면 NullPointerException(NPE)가 발생. --> 런타임에 프로그램을 실행해봐야 오류를 찾을 수 있는 최악의 오류 💻코틀린 널 값이 될 수 있는 참조 타입과 널 값이 될 수 없는 참조타입을 구분 해고 널 발생 여부를 컴파일 시점으로 옮겨주기 때문에 NullPointerException(NPE) 예외를 상당 부분 막을 수 있다. 📗널이 될 수 있는 타입..
코틀린의 예외처리는 자바의 접근 방법과 아주 비슷하다. 함수는 정상 종료, 즉 어떤 값을 반환하거나 비정상적으로 오류가 발생한 경우 예외를 던질(thorw) 수 있다. 예외가 발생한 경우에는 함수를 호출한 쪽에서 예외를 잡아내거나(catch), (잡아내지 않는 경우) 함수 호출 스택의 위로 예외가 전달될 수 있다. 자바와 마찬가지로 오류 조건을 신호로 보내려면 throw 식에 예외 객체를 사용해야 한다. import java.util.* import kotlin.* fun main(){ val str=readLine()!!.toString() println(parseIntNumber(str)) } fun parseIntNumber(s: String): Int{ var num=0 if(s.length !i..
아직 코틀린 문법과 Android Studio 사용법이 미흡하지만 일단 하나 만들어 보는 게 좋을 거 같아서 시작했지만 많이 허술하고 아직 모자랍니다 ㅎㅎ.. 😂😂 앱을 만들고 보니 코드 짜는 것도 어렵지만 이쁘게 꾸미는 것도 엄청 일이라고 느꼈다. 이번 계산기 앱에서 버튼 디자인 및 색상을 입히는 것은 아래 블로그의 코드를 참조했다. https://whyprogrammer.tistory.com/574 [안드로이드] 계산기 어플 앱 만들기 with 코틀린 1. 안드로이드 계산기 어플 앱 만들기 with 코틀린 이번에 진행한 프로젝트는 안드로이드 계산기 어플리케이션 만들기입니다. 간단하게 사용자가 입력한 식을 연산할 수 있고 계산 기록을 확인할 whyprogrammer.tistory.com 🔎계산기의 기능..
루프의 시작이나 끝 부분이 아닌 중간에서 종료 조건을 검사하면 편리할 수 있다. 이런 경우를 위해 코틀린은 몇 가지 식을 제공한다. break는 즉시 루프를 종료시키고, 실행 흐름이 루프 바로 다음 문으로 이동하게 만든다. continue는 현재 루프 이터레이션을 마치고 조건 검사로 바로 진행하게 만든다. 말로만 들으면 서로의 의미가 무엇인지 아마 헷갈릴 수 있다. fun main() { val a=IntArray(10) {it} var sum=0 for(x in 0..10){ if(x==5){ break; } print(x); //0,1,2,3,4 } } 위 경우에는 x가 5가되는 순간 break를 만나서 for문이 강제로 종료된다. fun main() { val a=IntArray(10) {it} v..
코틀린에서의 반복문은 세 가지 제어 구조를 제공한다. 📕do- while fun main(){ var sum=0 var n=0 do{ n=readLine()!!.toInt() sum+=n }while(n!=0) println("Sum: $sum") } do 와 while 키워드 사이에 있는 루프 몸통을 실행한다. while 키워드 다음에 있는 조건을 평가한다. 이 값이 참이면 1번 단계로 되돌아가고, 이 값이 거짓이면 루프 문 다음에 있는 문을 실행한다. 루프 몸통을 실행한 후에 조건을 검사하기 때문에 루프 몸통이 최소한 한 번은 실행한다는 사실을 유의해야 한다.! 📕while fun main(){ val num = Random.nextInt(1,101) var guess =0 while(guess!=n..
자바의 switch가 있다면 코틀린에는 when이 있다. 이번 글에서는 when에 대해서 작성해볼 예정이다. if문은 두 가지 가능성 중 하나를 선택하게 해 준다는 것을 우리는 알고 있다. 그리고 여러 개의 if문을 사용해서 순차적으로 검사하면서 여러 개 중 하나를 선택할 수 있다. fun hexDigit(n:Int):char{ if(n in 0..9) return '0'+n else if(n in 10..15) return 'A'+n-10 else return '?' } 하지만 여러 대안중 하나를 선택할 수 있는 기능이 있다면 여러 개의 if 문을 사용하는 것보단 훨씬 간결하게 코드를 짤 수 있을것이다. 이러한 기능을 제공해 주는 것이 바로 when이다. fun hexDigit(n:Int) char{ ..