사랑은 돈보다 더 무거워, Kotlin이라면
4600 단어 Kotlin
Kotlin은 웹 브라우저에서 간단하게 실행할 수 있는 코드도구는 공식에서 제시한 것이기 때문에 이것으로 문제 코드를 실행해 보세요.
너무 좋아요!Kotlin이라면,'사랑'이'금'보다 더 무겁다는 것을 증명했다!
설명
위의 코드에 스크롤할 때 보이지 않는 부분을 더하면 다음과 같다.
fun main(args: Array<String>) {
println("'金' < '愛' = " + ("金" < '愛'))
println("'愛' < '金' = " + ("愛" < '金'))
}
operator fun String.compareTo(c: Char) = c.toString().compareTo(this)
네, String
에서 성장compareTo()
하여 크기를 비교적 역전시키는 것은 옳지 않습니다.Kotlin은 연산자 과부하가 있고
<
방법의 실행으로 대체됩니다.또한 Kotlin은 기존 클래스에 (보기) 방법을 추가할 수 있는 확장 함수를 제공합니다.
즉,
compareTo()
에 반전비교결과String
의 방법compareTo()
의 확장함수를 추가하면 상기와 같은 상반된 결과를 얻을 수 있다.그러나
String
이compareTo(String)
를 서로 비교하는 방법을 정의했다.클래스에 확장 함수에 추가된 방법과 같은 서명 방법이 존재한다면, 이 방법을 실행할 때 확장 함수는 이 방법을 실행하지 않고 원시적인 방법을 실행합니다.
비교를 반전시키기 위해 compareTo(String)에서 확장 함수를 정의해도
fun main(args: Array<String>) {
println("'金' < '愛' = " + ("金" < "愛"))
println("'愛' < '金' = " + ("愛" < "金"))
}
operator fun String.compareTo(s: String) = s.compareTo(this)
오리지널 compareTo(String)를 실행하기 때문에 고통스러운 현실에 직면하게 된다'金' < '愛' = false
'愛' < '金' = true
그러나 확장 함수의 과부하는 문제없습니다.그리고 다행히도?
String
중String
의 방법은정의되지 않음.따라서 확장 함수 정의
compareTo(Char)
방법을 통해 compareTo(Char)
의String
와"金"
의Char
를 비교하여 상기 결과를 얻을 수 있다.다음은 Kotlin의 확장 함수에 대한 잘못된 사용법입니다.
Reference
이 문제에 관하여(사랑은 돈보다 더 무거워, Kotlin이라면), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/opengl-8080/items/0618a5e21105caf39913텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)