전체 글
경희대 축제 뉴진스 공연 0915
경희대 축제 뉴진스 공연 0915
2023.09.16뉴진스가 온다고 해서 오랜만에 학교에 갔다. 멀리서도 볼만하긴 한데 뒤에 앉은 입장에선 차이가 별로 없어보이지만 한 번 앞에 가보면 확실히 다르다. 그냥 공연을 보는 것과 매우 차이가 크다. 뉴진스 공연은 돈 주고 콘서트를 가더라도 가까이 갈 수 없다는 걸 너무 잘 알았고 학교 축제에선 일찍 줄만 서면 되기 때문에 기꺼이 하루를 통째로 반납했다. 스탠딩 앞열을 기대하고 갔으나 줄이 생각 이상으로 너무 길어서 실망조차 안 됐다. 학교 뒤에 이런 공간이 있는지 처음 알았고 5시간을 기다려서 입장했다. 텐트 치고 전날 저녁부터 줄을 선 사람도 있었다. 먼저 서있던 사람들이 생각보다 좌석으로 많이 빠져서 나름 괜찮은 위치에서 스탠딩을 했는데 너무 힘들었다. 아티스트 공연까지 장장 9~10시간을 기다리면서 체력적..
코틀린 스터디 - 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의..
코틀린 스터디 - 6장
코틀린 스터디 - 6장
2023.08.20문자열 검색 속성과 메서드 메서드 get : 인덱스를 전달해서 검색한다. 메서드 first/last : 문자열의 첫 번째 원소와 마지막 원솟값을 조회할 때 사용한다. 속성 lastIndex : 문자열의 마지막 인덱스를 제공한다. 속성 length : 문자열 원소의 개수를 조회하는 속성이다. 메서드 getOrElse : 범위를 초과했을 때 람다표현식을 실행해서 초깃값을 제공한다. 메서드 getOrNull : 없는 인덱스를 조회하면 예외가 아닌 널을 반환한다. println(myString.getOrElse(myString.length, {'0'})) //범위를 벗어날 경우 초깃값 처리 println(myString.getOrNull(myString.length)) //범위를 벗어날 경우 null //0 /..
코틀린 스터디 - 5장
코틀린 스터디 - 5장
2023.08.13주 생성자 다른 프로그램 언어와의 클래스 정의의 차이점은 주 생성자를 머리부에 정의하는 것이다. 클래스 이름 옆에 constructor 키워드를 사용하여 정의할 수 있고 생략 가능하다. private일 경우 생략 불가하다. 주 생성자 내부에 매개변수를 정의할 수 있고 매개변수 앞에 val이나 var을 붙이면 속성으로 정의한다. 주 생성자에 대한 초기화는 init 블록을 사용한다. 주 생성자가 호출될 때 init 블록 내부의 코드가 실행된다. class Person (name:String, age:Int){ val name = name var age = age } class People(val name: String, val age: Int) 보조 생성자 본문에 constructor 이름으로 보조 생성자를..
[트러블슈팅] 리사이클러뷰 item 다중 삭제 구현 중 인덱스가 밀렸던 문제
[트러블슈팅] 리사이클러뷰 item 다중 삭제 구현 중 인덱스가 밀렸던 문제
2023.08.12sopt 세미나에서 리사이클러뷰 selection 라이브러리를 알게 됐고 이번 기회에 사용을 해봤다. 처음에는 selection 라이브러리를 활용해서 기능 구현을 했다가 몇가지 이슈가 있어서 안 쓰는 방향으로 리팩토링을 했다. item 삭제 시 인덱스가 밀리는 문제가 발생했다. 가령 인덱스가 [0], [1], [2]인 3개의 data가 있고 [1]을 삭제하면 data가 2개로 줄면서 [2]이 새로운 [1]이 돼야 하는데 이게 갱신이 안 된 형태로 여전히 [2]로 남아있어서 indexOutOfBounds 에러가 떴다.인덱스 말고 리사이클러뷰 item 고유의 id 값을 기준으로 currentList에서 filter를 해주는 식으로도 코드를 짜봤는데 해결이 안 됐다. 차선으로 selection 라이브러리의 ..