#14 Kotlin Koans Conventions/In range 해설
1 소개
Kotlin 공식 레퍼런스의 Kotlin Koans/In range의 해설 기사입니다.
Kotlin Koans를 통해 Kotlin을 배우는 사람들의 도움이 되길 바랍니다.
다만, 레퍼런스를 자력으로 읽는 힘을 기르고 싶은 분은,
곧이 기사를 보지 마십시오!
일단 각자 도전하고 나서 볼 수 있다고 생각합니다
2 contains() 함수
Operator overloading
a in b
라고 하는 표현으로 b.contains(a)
와 같이 사용합니다.
3 Conventions/In range 해설
Kotlin Koans Conventions/In range 의 해설입니다.
수시로 본 사이트의 내용을 인용하겠습니다.
오른쪽의 본문을 보자.
In Kotlin in checks are translated to the corresponding contains calls:
val list = listOf("a", "b")
"a" in list // list.contains("a")
"a" !in list // !list.contains("a")
Read about ranges . Add a method fun contains(d: MyDate) to the class DateRange to allow in checks with a range of dates.
왼쪽의 코드와 MyDate.kt 파일의 코드를 살펴 보겠습니다.
In_rangeclass DateRange(val start: MyDate, val endInclusive: MyDate)/* TODO */
fun checkInRange(date: MyDate, first: MyDate, last: MyDate): Boolean {
return date in DateRange(first, last)
}
MyDate.ktdata class MyDate(val year: Int, val month: Int, val dayOfMonth: Int) : Comparable<MyDate> {
override fun compareTo(other:MyDate) = when{
year != other.year -> year - other.year
month != other.month -> month - other.month
else -> dayOfMonth - other.dayOfMonth
}
}
checkInRange() 함수를 호출할 때, MyDate 형의 인스턴스를 3개 건네주고,
date가 first와 last 사이의 날짜임을 확인하는 코드를 구현해 보겠습니다.
return date in DateRange(first, last)
DateRange(first,last) 부분에서,
속성 start
에 first
가 endInclusive
에 last
가 할당됨
DateRange 형식의 인스턴스가 생성되었습니다.
(start/first/endInclusive/last는 모두 MyDate 타입)
DateRange(first,last)는 contains()를 호출할 때 인수로 date를 전달합니다.
그래서 TODO 부분의 구현은
first<=date<=last의 대소 관계를 표현하면 됩니다.
따라서 TODO의 부분을 구현한 해답은
contains() 함수를 이용한 다음과 같습니다.
In_rangeclass DateRange(val start: MyDate, val endInclusive: MyDate){
operator fun contains(item: MyDate): Boolean = start <= item && item <= endInclusive
}
fun checkInRange(date: MyDate, first: MyDate, last: MyDate): Boolean {
return date in DateRange(first, last)
}
4 마지막으로
다음 번은 Kotlin Koans Conventions/Range to의 해설을합니다.
Reference
이 문제에 관하여(#14 Kotlin Koans Conventions/In range 해설), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/G-o/items/14d0247665b50bd2d7bf
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Operator overloading
a in b
라고 하는 표현으로 b.contains(a)
와 같이 사용합니다.3 Conventions/In range 해설
Kotlin Koans Conventions/In range 의 해설입니다.
수시로 본 사이트의 내용을 인용하겠습니다.
오른쪽의 본문을 보자.
In Kotlin in checks are translated to the corresponding contains calls:
val list = listOf("a", "b")
"a" in list // list.contains("a")
"a" !in list // !list.contains("a")
Read about ranges . Add a method fun contains(d: MyDate) to the class DateRange to allow in checks with a range of dates.
왼쪽의 코드와 MyDate.kt 파일의 코드를 살펴 보겠습니다.
In_rangeclass DateRange(val start: MyDate, val endInclusive: MyDate)/* TODO */
fun checkInRange(date: MyDate, first: MyDate, last: MyDate): Boolean {
return date in DateRange(first, last)
}
MyDate.ktdata class MyDate(val year: Int, val month: Int, val dayOfMonth: Int) : Comparable<MyDate> {
override fun compareTo(other:MyDate) = when{
year != other.year -> year - other.year
month != other.month -> month - other.month
else -> dayOfMonth - other.dayOfMonth
}
}
checkInRange() 함수를 호출할 때, MyDate 형의 인스턴스를 3개 건네주고,
date가 first와 last 사이의 날짜임을 확인하는 코드를 구현해 보겠습니다.
return date in DateRange(first, last)
DateRange(first,last) 부분에서,
속성 start
에 first
가 endInclusive
에 last
가 할당됨
DateRange 형식의 인스턴스가 생성되었습니다.
(start/first/endInclusive/last는 모두 MyDate 타입)
DateRange(first,last)는 contains()를 호출할 때 인수로 date를 전달합니다.
그래서 TODO 부분의 구현은
first<=date<=last의 대소 관계를 표현하면 됩니다.
따라서 TODO의 부분을 구현한 해답은
contains() 함수를 이용한 다음과 같습니다.
In_rangeclass DateRange(val start: MyDate, val endInclusive: MyDate){
operator fun contains(item: MyDate): Boolean = start <= item && item <= endInclusive
}
fun checkInRange(date: MyDate, first: MyDate, last: MyDate): Boolean {
return date in DateRange(first, last)
}
4 마지막으로
다음 번은 Kotlin Koans Conventions/Range to의 해설을합니다.
Reference
이 문제에 관하여(#14 Kotlin Koans Conventions/In range 해설), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/G-o/items/14d0247665b50bd2d7bf
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
val list = listOf("a", "b")
"a" in list // list.contains("a")
"a" !in list // !list.contains("a")
class DateRange(val start: MyDate, val endInclusive: MyDate)/* TODO */
fun checkInRange(date: MyDate, first: MyDate, last: MyDate): Boolean {
return date in DateRange(first, last)
}
data class MyDate(val year: Int, val month: Int, val dayOfMonth: Int) : Comparable<MyDate> {
override fun compareTo(other:MyDate) = when{
year != other.year -> year - other.year
month != other.month -> month - other.month
else -> dayOfMonth - other.dayOfMonth
}
}
return date in DateRange(first, last)
class DateRange(val start: MyDate, val endInclusive: MyDate){
operator fun contains(item: MyDate): Boolean = start <= item && item <= endInclusive
}
fun checkInRange(date: MyDate, first: MyDate, last: MyDate): Boolean {
return date in DateRange(first, last)
}
다음 번은 Kotlin Koans Conventions/Range to의 해설을합니다.
Reference
이 문제에 관하여(#14 Kotlin Koans Conventions/In range 해설), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/G-o/items/14d0247665b50bd2d7bf텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)