Kotlin
코틀린 스터디 - 12장
코틀린 스터디 - 12장
2023.10.15제네릭타입 매개변수(Type Parameter) : 클래스나 함수의 자료형을 임의의 문자로 지정해서 컴파일 타임에 자료형 저검을 할 때 사용한다.타입 인자(Type Argument) : 객체 생성, 함수 호출할 때 실제 자료형을 지정해서 정해진 임의의 타입을 실제 타입으로 변경한다. 제약 사항제네릭을 구성할 수 있는 것은 함수, 클래스, 추상 클래스, 인터페이스, 확장함수, 확장 속성이다.제네릭을 구성할 수 없는 것은 하나의 객체만 만드는 object 정의, companion object, object 표현식이다. 하나의 객체만 만드므로 특별히 일반화할 필요가 없기 때문이다.클래스와 obejct 내의 멤버는 별도의 제네릭으로 만들 수 없다. 타입 매개변수와 타입 인자를 지정하는 위치타입 매개변수와 타입 ..
코틀린 스터디 - 11장
코틀린 스터디 - 11장
2023.09.24클래스 위임 특정 클래스에 자기 클래스가 할 일을 다른 클래스에 맡겨 처리하는 것을 말한다. 위임을 맡기는 클래스를 위탁자, 위임을 받아서 실제 처리하는 클래스를 수탁자라고 한다. 코틀린에서는 이 관계를 by를 사용해서 쉽게 구성할 수 있다. 위임이 좋은 것은 다양한 기능을 하나의 클래스를 통해서 받고 처리할 수 있도록 구조화할 수 있기 때문이다. 동일한 일을 나눠서 처리하려면 공통된 인터페이스가 필요하다. 클래스 위임 처리 //같은 결과를 반환하는 두 case val b = BaseImpl(10) Derived(b).say() class Derived_() : Base by BaseImpl(10) Derived_().say() //베이스 클래스 구현 : 10 //베이스 클래스 구현 : 10 생성자의 매..
프로그래머스_약수의 합
프로그래머스_약수의 합
2023.09.23나의 풀이 class Solution { fun solution(n: Int): Int { var answer = 0 for(i in 1..n) { if(n % i == 0) { answer += i } } return answer } } 다른 사람의 풀이 class Solution { fun solution(n: Int): Int { var answer = 0 answer = (1..n).filter { n % it == 0 }.sum() return answer } } 나머지가 0이 되는 걸 약수로 취급한다는 흐름은 같다. 반복문 돌릴 때 범위 지정만 해봤지 이렇게 따로 떼서 써본 적은 없어서 기억에 남았다.
코틀린 스터디 - 10장
코틀린 스터디 - 10장
2023.09.17순수함수(pure function)의 조건 동일한 인자로 실행하면 항상 동일한 값을 반환한다. (지역변수만으로 로직을 처리하고 결과를 반환한다.) 함수 내부에서 반환값 이외의 결과로 부수효과가 발생하지 않는다. 부수효과(side effect) 함수가 실행되는 과정에서 함수 외부의 data를 사용 및 수정하거나 외부의 다른 기능을 사용하는 것을 말한다. 함수가 전역변수(global variable)를 사용하거나 수정하는 것이다. 함수가 표준 입출력(ex. println)을 사용해서 키보드 입력과 화면 등에 출력한다. Q. 여러 곳에서 하나의 전역변수를 공유하게 하는 게 편하던데 순수함수를 지향해야 하는 것인지 궁금합니다. 일급 객체 함수 함수나 정수도 문자열처럼 객체로 사용할 수 있는 것을 말한다. 함수를..
코틀린 스터디 - 9장
코틀린 스터디 - 9장
2023.09.10추상 클래스하나 이상의 추상 프로퍼티나 추상 메서드를 가진 클래스 클래스 앞에 abstract 키워드를 사용한다.프로퍼티나 메서드도 abstract로 선언될 수 있으며 이때는 추상 프로퍼티나 추상 메서드라고 부른다.abstract 키워드가 붙은 것은 하위 클래스에서 반드시 구현해야 한다.추상 클래스는 abstract 키워드 자체가 상속과 오버라이딩을 허용하고 있기 때문에 상속 시 open 키워드가 필요없다. 하지만 일반 프로퍼티에 대해선 open 키워드를 붙여주어야 한다.구현 클래스에서 override한 속성이나 메서드가 하위 클래스에서 상속을 금지하려면 final 지시자가 필요하다.추상 클래스에 아무런 속성이 없어도 구현 클래스에서 상속할 때는 위임호출이 필요하다.추상 클래스 내부에도 init 블록을 ..
코틀린 스터티 - 8장
코틀린 스터티 - 8장
2023.09.03mutable/immutable 가변(mutable) 컬렉션: 보통 컬렉션 객체는 추가, 수정, 삭제를 할 수 있다. 불변(immutable) 컬렉션: 컬렉션 객체 중에 한 번 만들어지면 추가, 수정, 삭제를 할 수 없다. 하지만 불변 객체의 내부 원소에 대한 추가, 삭제, 수정 메서드를 가지면 기존 객체는 그대로 두고 새로운 객체를 만든다. LinkedList 가변 길이로 리스트를 만든다. 각 원소가 가지는 주소를 별도로 보관하므로 LinkedList라고 한다. 보통 LinkedList 클래스로 객체를 생성한다. LinkedList는 연산자나 메서드로 객체를 결합할 수 있다. 불변 리스트처럼 원본을 바꾸지 않고 새로운 리스트 객체를 만들어 반환하는 것을 알 수 있다. Q. ArrayList와 List의..