나는 어느 곳에서나 모든 사람들이 그것에 빠져 들어가야 만하는 매우 단순한 문제를 만났지만 어느 곳에서나 솔루션을 찾지 못했습니다.int 및 int 추가? in Kotlin
이var a : Int = 1
var c : Int? = 3
a + if (c != null) {c} else {0}
ERROR: None of the following functions can be called with supplied argument (followed by the various implementations of kotlin.int.plus())
그래서 함께 지능과 지능을 추가 난 할 노력하고있어입니다 :
는 REPL에서 복사? 그 결과가 Int가되고 싶습니다. 아주 간단합니다. 물론!!
연산자에 대해 알고 있지만, 변경 안전 †이 아니므로 가능할 때마다이 연산자를 사용하지 않는 것이 좋습니다.
a + if (c != null) {c!!} else {0}
4
내가 널 안전을 처리하고 !!
연산자의 사용을 피할 다음과 같은 솔루션, 알고있다.
a + (c ?: 0)
4
내 질문은 다음과 같은 경우 : !!
연산자의 사용을 요구하지 않는 경우 - 다른 블록의 사용 및/또는 블록에 추가 할 수있는 방법이 있나요. Elvis 연산자가 아닌 if-else의 사용을 선호하는 이유는 Elvis 연산자가없는 언어의 사람들에게 명료합니다. 그래서 나는 가능한 한 a + if (c != null) {c} else {0}
에 가깝게하고 싶습니다.
내 문제 또는 동기가 명확하지 않거나 Kotlin의 의도 또는 의도에 위배되는 경우 고맙습니다. 알려 주시기 바랍니다.
† 내가 추가 할 때 일부 변수가 안전하다고 주장 할 수도 있지만이 코드는 주변 코드가 변경 될 때도 그대로 남아 있기 때문에 어설 션을 무효로 만들 수 있으므로 Kotlin의 포인트 중 하나가 무효화됩니다 : 안전을 보장하지 않습니다.
와우, 실제로 이것이 REPL 특정 문제가 될 것이라고 기대하지 않았습니다. null 체크는 함수에서 사용될 때 실제 작업을 수행합니다. 그래서'var d = a + if (c! = null) {c} else {0};은 함수에서 작동합니다. 나는 물건을 테스트하고 Kotlin의 다양한 단점을 찾기 위해 REPL을 사용 해왔다. 나는 적절한 프로그램에서 그렇게해야한다고 생각합니다. 고맙습니다. –
^^ 정확하게. REPL이 전형적인 프로덕션 작업 흐름에 관여하지 않기 때문에 REPL 관련 버그 및 문제점이 수없이 많습니다. – voddan