이게 그 토스 문제임.
fun solution(assets: Array<String>): Array<String> =
assets.mapNotNull { asset -> runCatching { asset.toAssetResult() }.getOrNull() }
.sorted()
.filter(Asset::isValid)
.map(Asset::text)
.distinct()
.toTypedArray()
보통 이게 체이닝이고
체이닝은 보통 언어에 연동 안됨. 그냥 체이닝 자체가 일종의 개념이라서.
그럼 저 체이닝은 뭐냐? 파이프라인 순서임
근데 정렬-> 필터
이렇게하는데 이거는 그냥 기초만 알아도 필터 다음에 정렬 하라고 배움.
필터->정렬하는게 맞음
assets.mapNotNull { it.toAssetOrNull() }
.filter { it.isValid() }
.sorted()
.distinctBy { it.toString() }
.map { it.toString() }
.toTypedArray()
그럼 이렇게 되겠지
그다음에 distinctBy를 쓰는 걸 권장하는게 맞는거고
그럼 이렇게 체이닝 순서만 알아도 편하게 순서가 잘못됐다.라고 말할 수 있는건데
애초에 체이닝 주로 쓰이는 fluent builder 같은게 나온게 그거임
단순 빌더로 처리 안되니까 체이닝으로 하나의 파이프라인을 내장한 객체 생성이고
이 경우에는 외부서 호출할 파이프라인 설계하는 관점인데
그 관점에서 순수하게 잘못됐단거임
그래서 걍 딱 봐도 바로 잘못됐다고 말한건데 뭔 서버쪽을 몰라도 알 수 있는 API 설계 문제를 서버쪽 모르는데 어떻게 풀었냐고 하면 내가 궁금하다야
아아 대중 스크립트
섹스
메소드 참조도 코틀린용 람다문법으로 바꿔버렷노 역시 코틀린고수 ㅆㅇㅆ찡
람다 문법은 코틀린이랑 C#이랑 큰차이가 없으니까 아는거지. 애초에 코틀린 문법 자체는 당연히 알지. 그걸로 만들어 본 프로젝트가 없는거지
@ㅆㅇㅆ(124.216) 람다는 다 써도 it키워드는 코틀린용인데.. 프로젝트 해본적도 없는데 저렇게 뚝딱 다바꾼 ㅆㅇㅆ 대단하면 개추. 이 정도면 언어마스터인데 왜 한국에서 프리랜서 하는지 이해안감. ㅆㅇㅆ찡을 해외로 보내자
@프갤러2(211.36) it 키워드는 씨발 어려울게 없잖아
@프갤러2(211.36) 단순 단일 변수인데, 애초에 C#에서 있는 키워드인데 그거 썼다고 뭐라하면
@ㅆㅇㅆ(124.216) 기본인데 메인으로 쓰지도 않는 언어 자잘한 부분까지 바꾸는게 신기한거지 ㅇㅅㅇ개츄개츄
@프갤러2(211.36) 애초에 저 문제 보고 나도 찾아서 수정해보니까 그런거지. 별 당연한걸 묻노 니는. 이게 암기 시험도 아니고
@ㅆㅇㅆ(124.216) ㅆㅇㅆ찡 그리고 내가보기엔 필터후 중복걸러내고 정렬하는게 맞는거같은데? 왜 필터랑 정렬순서로 저렇게 장황하게얘기하고 중복거르는건 젤 마지막에둠? ㅇㅅㅇ
@프갤러2(211.36) 근데 그 토스 원본 코드에서 .sorted() 정렬이 먼저잖아 친구야
@프갤러2(211.36) 새벽에 대강 수정하면서 왜 저렇게 수정해야하는지 다 기억이 안나서 그렇지. 애초에 토스 원본 코드에서 정렬 먼저하고 필터하는거고, 내 코드가 필터하고 정렬이잖아
@프갤러2(211.36) 애초에, 지피티에 저 코드 넣으면 내가 한것처럼 비판 안하고 바로 저 코드 잘짰다고 하는데, 무슨 지피티에 코드를 넣니 마니가 나오냐. 네가 하도 우겨서 바로 저 코드 넣어봤다 저 위에 게시물이 그거임