Kotiln
-
코틀린 기초Kotiln 2019. 7. 23. 15:33
코틀린의 특성 함수를 선언할 때 fun 키워드를 사용한다. 파라미터 이름 뒤에 그 파라미터의 타입을 쓴다. 함수를 최상위 수준에 정의할 수 있다. 배열로 일반적인 클래스와 마찬가지다. 여러 가지 표준 자바 라이브러리 함수를 간결하게 사용할 수 있게 wrapper 를 제공한다. (System.out.println -> println ) 줄 끝에 세미콜론을 붙이지 않아도 된다. 함수 함수 선언은 fun 키워드로 시작하며 fun 다음에는 함수 이름이 온다. 함수 이름 뒤에는 괄호 안에 파라미터 목록이 온다. 함수의 반환 타입은 파라미터 목록의 닫는 괄호 다음에 오는데 괄호와 반환 타입 사이를 콜론(:)으로 구분해야 한다. fun max(a: Int, b: Int) : Int { return if (a > b)..
-
코틀린 - 연산자 오버로딩과 기타 관례Kotiln 2019. 7. 23. 10:54
어떤 언어 기능과 미리 정해진 이름의 함수를 연결해주는 기법을 관례 라고 부른다 이항 산술 연산 오버로딩 연산자를 오버로딩하는 함수 앞에는 꼭 operator 키워드를 붙여야 한다. operator 키워드를 붙임으로써 어떤 함수가 관례를 따르는 함수임을 명확히 할 수 있다. 코틀린에서는 직접 연산자를 만들어 사용할 수 없고 언어에서 미리 정해둔 연산자만 오버로딩할 수 있으며 관례에 따르기 위해 클래스에서 정의해야 하는 이름이 연산자별로 정해져 있다. 식 함수 이름 a * b times a / b div a % b mod (1.1 부터 rem) a + b plus a - b minus 코틀린은 표준 숫자 타입에 대해 비트 연산자를 정의하지 않는다. 따라서 커스텀 타입에서 비트 연산자를 정의할 수도 없다. ..
-
코틀린 타입 시스템 - 컬렉션과 배열Kotiln 2019. 7. 22. 10:03
null 가능성과 컬렉션 컬렉션 타입 인자에 ? 를 붙이면 컬렉션에 null 을 저장할 수 있다. List 는 리스트 안의 각 값이 null이 될 수 있다 는 의미이고 List? 는 전체 리스트가 null이 될 수 있다는 의미이기 때문에 조심해야 한다. filterNotNull 함수는 null이 될 수 있는 값으로 이뤄진 컬렉션에서 null 값을 걸러준다. 읽기 전용과 변경 가능한 컬렉션 코틀린은 컬렉션 안의 데이터에 접근하는 인터페이스와 컬렉션 안의 데이터를 변경하는 인터페이스가 분리되어 있다. kotlin.collections.Collection 인터페이스 와 kotlin.collections.MutableCollection 인터페이스로 나뉜다. 객체의 배열과 원시 타입의 배열 코틀린 배열은 타입 ..
-
코틀린 타입 시스템 - 원시 타입Kotiln 2019. 7. 19. 17:44
코틀린 타입 시스템 - 원시 타입 원시 타입 자바는 원시 타입 (int 등) 과 참조 타입 (String 등) 을 구분하고 참조 타입이 필요한 경우 원시 타입 갑을 래퍼 타입으로 감싸서 사용한다. 코틀린은 원시 타입과 래퍼 타입을 구분하지 않으므로 항상 같은 타입을 사용한다. val i: Int = 1 val list: List = listOf(1, 2, 3)더 나아가 코틀린에서는 숫자 타입 등 원시 타입의 값에 대해 메소드를 호출할 수 있다. 대부분의 경우 코틀린의 Int 타입은 자바 int 타입으로 컴파일 된다. 컴파일이 불가능할 경우는 컬렉션과 같은 제네릭 클래스를 사용하는 경우뿐이다. null이 될 수 있는 원시타입 null 참조를 자바의 참조 타입의 변수에만 대입할 수 있기 때문에 null 이 ..
-
코틀린 타입 시스템 - null 관련Kotiln 2019. 7. 19. 16:05
null 가능성(nullability) 은 NullPointerException 오류를 피할 수 있게 돕기 위한 코틀린 타입 시스템의 특성이다. null이 될 수 있는 타입 변수의 타입 뒤에 ? 를 붙이면 null 참조를 저장할 수 있다는 뜻이다. var x: String? = null?. 안전한 호출 연산자 ?. 연산자는 null 검사와 메소드 호출을 한번의 연산으로 수행한다. var allCaps: String? = s?.toUpperCase()?: 엘비스 연산자 null 대신 사용할 디폴트 값을 지정할 때 사용한다. var str: String = s ?: "" // s가 null 이면 빈 문자열("")이다as? 안전한 캐스트 값을 대상 타입으로 변환할 수 없으면 null을 반환한다. var foo..