일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 안드로이드
- 타이쿤
- Android
- 안드로이드개발
- 서브모듈 pull
- 2d게임
- 개발
- 유니티
- DataBinding
- Kotlin
- gitlab submodule
- 티스토리
- 게임개발
- 코틀린
- Android Studio
- 앱개발
- submodule pull
- firebase
- 쿼터뷰
- 내 맘대로 정리한 안드로이드
- github
- github submodule
- java
- GIT
- 앱
- 안드로이이드 submodule
- 서브모듈 sourcetree
- submodule sourcetree
- Unity
- 카페오냥
- Today
- Total
목록Kotlin (9)
Uing? Uing!!
자바 내부에서 bitCount를 세는 방식을 찾아보니 아래와 같이 카운팅하고 있었다. /** * Returns the number of one-bits in the two's complement binary * representation of the specified {@code int} value. This function is * sometimes referred to as the population count. * * @param i the value whose bits are to be counted * @return the number of one-bits in the two's complement binary * representation of the specified {@code int} v..
View.setOnClickListener 안드로이드의 View.setOnClickListener는 아래처럼 OnClickListener라는 인터페이스를 받도록 설계되어 있다. public void setOnClickListener(@Nullable OnClickListener l) { if (!isClickable()) { setClickable(true); } getListenerInfo().mOnClickListener = l; } 이 구조에 정확하게 맞추어서 코틀린 코드를 작성한다면 이렇게 될 것이다. button.setOnClickListener(object: View.OnClickListener { override fun onClick(v: View?) { println("Clicked!") ..
아래 코드는 Animal이라는 클래스와 이를 상속받은 Dog와 Cat이라는 클래스이다. open class Animal { open fun makeSound() { println("making sound...") } } class Dog : Animal() { override fun makeSound() { println("bark!") } } class Cat : Animal() { override fun makeSound() { println("meow~") } } Animal 클래스의 인스턴스에 대해 makeSound() 메소드를 호출하면 "making sound..."라는 결과값이 출력된다. 반면 Dog, Cat 클래스의 인스턴스에 대해서는 이 문자열이 아닌 "bark!" 또는 "meow~"만이 ..
생성자(constructor) 클래스의 생성자를 설정하는 데에는 다양한 방법이 있다. 아래처럼 주 생성자를 설정하는 방법이 가장 대표적이라고 할 수 있겠다. class Dog(val name: String, val age: Int) 하지만 여러 종류의 생성자가 필요한 경우도 있다. 이를테면 name, age 중 일부만 가지고 생성하고 싶다면 이렇게 쓸 수 있을 것이다. class Person { private var name: String = "" private var age: Int = 0 constructor() constructor(name: String) { this.name = name } constructor(name: String, age: Int) { this.name = name this..
클래스, 메소드, 프로퍼티 Kotlin으로 개발을 하다 보면 클래스와 메소드, 프로퍼티를 자주 사용하게 된다. 아래는 Dog라는 객체를 클래스르 만들어 활용하는 대표적인 예시이다. class Dog(var name: String){ // 클래스 fun bark() = println("멍!") // 메소드 } var happy = Dog("Happy") happy.bark() // Dog.bark() 메소드 호출 여기에 새로운 메소드를 추가하고 싶다면, 간단하게 클래스 안에 새로운 메소드를 추가하면 된다. class Dog(var name: String){ fun bark() = println("멍!") fun whine() = println("끼잉...") // 새로운 메소드 } 직접 수정할 수 없는 클..
가변적인 파라미터 개수: vararg를 사용하지 않는다면 함수를 사용하다 보면 파라미터로 몇 개의 인자를 받게 될지 정확하게 정할 수 없는 경우가 있다. 또는, 처음에 설계했던 구조의 파라미터 개수만으로 원하는 조건을 만족시킬 수 없는 경우가 있다. 예를 들어 아래 코드는 "입력값: A"라는 문자열을 출력한다. fun main(){ printData("입력값", "A") } fun printData(name: String, value: String){ val result = "$name: $value" println(result) } 그런데, printData함수를 printData("입력값", "A", "B")와 같이 입력해서 "입력값: AB"도 출력하고 싶어졌다면? 첫 번째 방법: 함수 오버라이딩하기..
Null-check Kotlin을 이용해 개발하다 보면 nullable한 값을 처리해야 할 일이 잦다. x가 확실히 non-null이라는 것을 가정할 경우에는 x!!로 활용하여 null이면 exception(NPE, Null-Pointer Exception)이 나도록 하기도 하고, 반대로 null일때도 다른 값으로 활용하고 싶다면 x?:0과 같이 null일 때 대신 사용할 값을 정해 주기도 한다. 하지만 '어떤 값이 null이 아닐 경우에만' 특정 기능을 실행하고 싶을 때도 많다. 예를 들면 '저장된 이름이 null이 아닌 경우에만 인삿말을 출력한다'와 같은 상황. 일반적으로 이렇게 어떤 값이 null인지 아닌지 확실하지 않는 경우, 이를 체크하기 위해 아래처럼 사용하곤 한다. if (name != nu..
빈 문자열 확인 코틀린으로 문자열을 활용하다 보면 이 문자열이 빈 문자열인지 아닌지 확인해야 할 경우가 있다. 빈 문자열을 확인할 때에는 isEmpty() 또는 isBlank()를 사용할 수 있다. someString.isEmpty() someString.isBlank() 두 메소드는 비슷해 보이지만 미묘하게 차이점이 있다. isEmpty() isEmpty()는 특정 문자열이 ""인지 아닌지를 확인한다. val s1 = "" s1.isEmpty() // true val s2 = " " s2.isEmpty() // false 따라서, 위의 두 문자열 중 s2는 empty하지 않다는 결과를 돌려준다. isBlank() isBlank()는 특정 문자열이 비어 있거나, 또는 공백으로만 이루어져 있는지를 확인한다..