목록공부 (90)
변명은 만개 결과는 한개
Lambdas 코틀린에서는 기본적으로 람다를 제공하고있음. button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { view.setAlpha(0.5f); } }); 위와같은 java 코드가 setOnClickListener 의 구현해야하는 메소드가 한가지(onClick()) 뿐이기에 아래와 같이 3줄로 줄어들 수 있음 button.setOnClickListener { view -> view.alpha = 0.5f } 또 한번 더, onClick() 메소드가 싱글 파라미터(한가지의 파라미터만을 가지는 메소드) 이기에 it 키워드를 사용하여 아래와 같이 생략 가능함 button.setOnCl..
Control Flow if, else java 와 비슷하다 // 활용1 fun test() { val a = 10 val b = 20 val max = if (a > b) a else b } // 활용2 fun test() { val a = 10 val b = 20 val max: Int val min: Int if (a > b) { max = a min = b } else { max = b min = a } } when 코틀린에는 switch 문이 존재하지 않기에 아래와 같이 when 사용 val a = 10 when (a) { 1, 10 -> // ... else -> // ... } 맨 마지막 else 는 반드시 붙어야 함 in, !in 또한, in 및!in 키워드로 포함, 포함되지 않은 경우 또..
Function Defining functions 리턴값이 없는 경우 fun 함수명(변수): Unit { // Unit 생략 가능 값 처리 } 리턴값이 있는 경우 fun 함수명(변수): 리턴타입 { return 값 } 아래와 같이 한줄로 되어있는 단순한 함수라면 return 의 생략이 가능하며, 유추하기를 통해 리턴타입 또한 생략 할 수 있음 fun getSum(a: Int, b: Int): Int { return a + b } // return 생략 fun getSum(a: Int, b: Int): Int = a + b // 유추하기를 통한 생략 fun getSum(a: Int, b: Int) = a + b Extension Functions 함수를 확장하여 기존에 있던 것처럼 사용할 수 있음. 단, ..
Class 생성자 class 클래스이름 constructor(변수){ } 또한 아래와 같이 다중 생성자를 가질 수 있음 class Sample constructor(val name: String, val arg: Int) { constructor(name: String) : this(name, 0) } class 를 정의함과 동시에 오는 생성자를 primary constructor 라 부르고, 그 이외의 생성자들을 secondary constructor 라 부른다. primary constructor 아래와 같이 constructor 생략 가능하다 class Sample (val name: String, val age: Int) { ... } 자바 생성자와 다르게 변수에 대한 타입을 바로 가질 수 있으며..
비교 메모리의 비교에는 === 사용 val a: Int = 10_000 print(a === a) // 'true' val b: Int? = a val c: Int? = a print(b === c) // 'false' 값의 비교에는 == 사용 val a: Int = 10_000 print(a == a) // 'true' val b: Int? = a val c: Int? = a print(b == c) // 'true' var / val var (mutable) read / write 모두 가능 val (immutable) java 의 final. read 가능하나 write 불가능함 null 자료형 뒤의 ? Nullable! 심지어 safecall 하지 않으면 .length 호출도 안됨 자료형 뒤에 ?..
Kotlin 에서 findViewById 시 // 1 val navView1 = findViewById(R.id.nav_view) as BottomNavigationView // 2 val navView2 = findViewById(R.id.nav_view) // 3 val navView3: BottomNavigationView = findViewById(R.id.nav_view) 위와 같이 세가지 모두 사용 가능함. 단, 첫번째 방법으로 findViewById 시도 시 두번째 방법을 추천함. 사실, apply plugin: 'kotlin-android-extensions' 를 사용하면 findViewById 할 필요도 없음. message.text = "set text" 처럼.
파이썬 코드들을 보는 와중에 member = member or ctx.author 라는 처음보는 `or` 사용이 눈에 띄어 테스트해보았다. >>> num = 1 or 3 >>> print(num) 1 위 연산 및 할당의 정확한 명칭은 잘 모르겠지만, `=` 할당자 사용 이후에 순차적인 연산에서 True 인 경우 바로 그 값으로 변수에 할당해주는것으로 보인다 :) >>> num = None or 4 >>> print(num) 4 >>> num = 3 and None >>> num >>> num = 3 and 2 >>> num 2 >>> num = True and 44 and True >>> num True `and` 또한 비슷하나, `=` 할당자 이후인 우측 항에서 모든 값이 True 인 경우 마지막 비교..
Pull Request 부터 Merge Pull Request 까지 - 7 원격(fork) repo를 최신으로 업데이트 remote 확인 아래 커맨드로 최신 업데이트를 위한 remote 확인. 이상한 경우 링크참고 git remote -v 원본 repo(upstream) 으로부터 최신 코드 fetch 아래 커맨드로 upstream 으로부터 최신 코드 fetch git fetch upstream fetch 된 코드중 upstream 의 master 브랜치 코드 merge 아래 커맨드로 fetch 된 코드중 upstream 의 master 브랜치 코드 merge git merge upstream/master merge 된 최신 코드를 fork repo(origin) 에 반영 아래 커맨드로 merge 된 최신..