분류 전체보기
-
확장함수Android 2024. 3. 18. 19:28
다른 사람의 클래스를 참고할 때, 원하는 메소드를 추가하고 싶은 경우가 있을 것이다. 이때, 다른 사람의 클래스 내부에 내가 정의한 메소드를 넣는건 원본 클래스를 해치는 일이라 찜찜할 수 있다. 코틀린에서는 자바와 달리 외부에서 클래스의 메소드를 추가하는 기능을 제공하는데, 이때 사용하는 개념이 확장함수이다. 확장함수를 통해 원본 클래스의 일관성을 유지할 수 있다. fun main() { fun Student.getGrade() = println("등급: ${this.grade}") // 확장함수 var student = Student("참새",5,"A+") student.displayInfo() // 이름: 참새, 나이: 5 student.getGrade() // 등급: A+ } class Studen..
-
Scope Functions (let, with, also, apply, fun)Android 2024. 3. 16. 09:06
어떤 객체의 변수, 메소드 등을 불러올때는 scope function 을 쓰는게 편리할 때가 있다. Scope 내 접근방식 thisScope 내 접근 방식 it블록 수행 결과 반환run, withlet객체 자신 반환applyalso 수신 객체 자체를 람다로 전달수신객체를 람다의 파라미터로 전달뒤에 코드에 주석처리한 부분을 보면 이해가 되는데, T는 수신객체를 의미한다. 이때, 수신객체는 it으로 사용할 수 있는데 따라서 scope 내 접근 방식이 it 인 경우, 수신객체를 람다의 파라미터로 전달한다는 뜻이다. block 내부(중괄호)는 람다함수의 소스코드를 의미한다.1. let 함수중괄호 블록 안으로 객체를 it 으로 전달하고, 블록 수행 결과를 반환한다. 이때, strNum 의 자료형은 let 함수를..
-
Pair,Triple 클래스Android 2024. 3. 15. 21:05
두 개 이상의 데이터를 포함하는 값을 리턴하는 클래스가 존재하는데, pair 클래스와 triple 클래스가 있다. 해당 클래스에 매개변수 값을 넣어 객체(인스턴스)를 생성하여 한번에 여러 개의 데이터를 관리할 수 있다. 1. Pair 클래스 명시할 때는 Pair , 객체를 생성할 때는 Pair(인자,인자) 이런 형태로 불러쓸 수 있다. 이미 정의되어 있는 Pair 클래스를 통해 객체를 생성하고, 그 객체는 2개의 원소를 가지고 있다. 이때, 접근은 first, second 함수를 통해 가능하다. 출력값도 (인자, 인자) 이렇게 나온다. fun main() { var noodle = Noodle() var noodles = noodle.getnoodle() println("${noodles}") // (너..
-
자료형변환, 업캐스팅, 다운캐스팅, Is 키워드Android 2024. 3. 15. 20:24
1. 자료형변환 fun main() { var str1 = "10" var str2 = "10.21" // 문자열을 숫자로 변경할 때의 메소드 var num1 = Integer.parseInt(str1) // 문자열을 정수로 변환하는 메소드1 var num2 = str1.toInt() // 문자열을 정수로 변환하는 메소드2 var num3 = str2.toDouble() // 문자열을 실수로 변환하는 메소드 } 객체 자료형간의 변환은 상속관계에서 가능하다. 2. 업캐스팅 자식클래스를 부모클래스의 자료형으로 객체를 생성하는 방법이다. fun main() { print("마리수를 입력하세요 : ") var count = readLine()!!.toInt() var birdList = mutableListOf..
-
동기/비동기 프로그래밍, 쓰레드, 코루틴카테고리 없음 2024. 3. 15. 17:07
1. 동기/비동기 프로그래밍 프로그래밍에 있어 동기 프로그래밍과 비동기 프로그래밍 뜻이 뭘까? 동기 프로그래밍은 순서대로 하나의 작업씩 수행하는 행위를 의미한다. 앞선 작업이 끝나지 않는다면 뒷 작업은 실행이 되지 않아 동시성이 보장되지 않는다. 즉, 요청 보내고 결과값을 받을때까지 작업을 멈추고 한가지씩 작업을 처리한다. 이와 달리, 비동기 프로그래밍은 동시성이 보장되어 요청을 보내고 결과값을 받기 전까지 다른 일을 수행할 수 있어 다양한 일을 한번에 처리할 수 있다. 프로그래밍에서는 비동기 프로그래밍 개념이 중요하다. 2. 쓰레드 프로그램은 하나의 메인 쓰레드인 메인 함수가 기본적으로 존재한다. 지금까지는 메인 쓰레드 위에서 동작을 실행해서 동시처리가 불가능했는데, 따로 자식 쓰레드를 생성하면 동시 ..
-
여러 복합 계산 : 후위연산자, Stack 개념 활용Android 2024. 3. 14. 12:50
계산기를 구현하다가 만약 여러 연산자가 섞인 입력값이 들어오면 어떻게 처리해야 할까? 예를 들어서, ((2+4)/6*10-5*8)/(3-6*5) 말이다 ... 이때 필요한 개념은 후위 연산자와 스택이다. 복합 계산 입력값을 컴퓨터가 이해할 수 있도록 바꿔주려면 후위 연산자 개념이 필요하다. 예를 들어, (2+4)*8/6 을 계산하고 싶다면, 컴퓨터가 이해하기 쉽도록 후위 연산자 표현인 2 4 + 8 * 6 / 으로 바꿔줘야 한다. 해당 표현으로 바꿔주면 컴퓨터는 해당 복합 연산식을 계산할 수 있다. 후위 연산자는 숫자가 앞에 있고, 연산자가 뒤(후)에 있도록 나열하는 방식이다. 주어진 후위 연산자 표현 2 4 + 8 * 6 / 표현을 컴퓨터는 어떻게 계산하는지 살펴보자 2 4 + 8 * 6 / // 첫번..
-
Git 기본 개념 정리Android 2024. 3. 13. 11:51
Repository 를 새로 생성 한 후 폴더의 코드를 git push 하는 경우 1. git remote add origin add 는 '더하다' 가 아니라 '지정하다' 를 의미한다. 즉, origin 을 github 주소로 지정한다는 말이다. 원래, 깃허브에 로컬에서 짠 코드를 올릴 때는 " git push 코드를 짠 브랜치 이름 " 을 해야 한다. 하지만, 매번 코드를 push 할 때마다 깃허브 주소를 쓰기는 너무 번거로우니, add 명령어를 통해 " origin = github 주소 " 로 통일하자는 의미이다! 해당 명령어 덕분에 이제 " git push origin 올리고 싶은 코드를 작성한 브랜치 이름 " 를 사용할 수 있게 된다. 2. git branch -M main 처음 레포지토리를 생성..
-
Git 에서 branch 활용하기Android 2024. 3. 12. 23:15
터미널(Git bash)에서 브랜치 활용하기 기존 파일을 수정하고 싶지만, 건드리지 않고 복사본을 만들어서 수정하고 싶을 때가 있습니다. 이때 활용하는게 바로 브랜치이다. 즉, 원본 파일의 복사본 = 브랜치 이다. 복사본은 여러 개 만들 수 있기 때문에 브랜치도 여러 개 생성 가능하다. 브랜치 이동 명령어의 경우 두 개의 명령어가 존재하는데, 둘 중 아무거나 써도 상관없다. 원래 checkout 명령어를 썼지만 의미가 직관적이지 않아 최근에 switch 명령어가 생성되었다고 한다. 정의 명령어 브랜치 생성명령어 git branch 브랜치이름 브랜치 확인 명령어 git branch 브랜치 이동 명령어 git switch 브랜치 이름 / git checkout 브랜치 이름 브랜치 생성 및 이동 명령어 git..