daplus.net Open in urlscan Pro
121.78.88.131  Public Scan

URL: http://daplus.net/
Submission: On March 11 via manual from KR — Scanned from DE

Form analysis 1 forms found in the DOM

GET http://daplus.net

<form action="http://daplus.net" method="get"><label class="screen-reader-text" for="cat">카테고리</label><select name="cat" id="cat" class="postform">
    <option value="-1">카테고리 선택하기</option>
    <option class="level-0" value="10">Android</option>
    <option class="level-0" value="15">Apple</option>
    <option class="level-0" value="8">C#</option>
    <option class="level-0" value="11">C++</option>
    <option class="level-0" value="12">Git</option>
    <option class="level-0" value="9">Html</option>
    <option class="level-0" value="6">JAVA</option>
    <option class="level-0" value="3">JAVASCRIPT</option>
    <option class="level-0" value="13">Linux&amp;Unix</option>
    <option class="level-0" value="16">Program</option>
    <option class="level-0" value="7">PYTHON</option>
    <option class="level-0" value="14">Server</option>
    <option class="level-0" value="1">쇼핑</option>
  </select>
</form>

Text Content

콘텐츠로 건너뛰기


리뷰나라

메인 메뉴
 * JAVASCRIPT
 * JAVA
 * PYTHON
 * C#
 * Android
 * Html


[KOTLIN] 무엇입니까? : KOTLIN에서 수행합니까? (엘비스 오퍼레이터)

Program / 글쓴이 어드민

?:예를 들어이 경우에서 무엇을하는지 알 수 없습니다.

val list = mutableList ?: mutableListOf()


왜 이것을 수정할 수 있습니까?

val list = if (mutableList != null) mutableList else mutableListOf()






--------------------------------------------------------------------------------

--------------------------------------------------------------------------------


답변

TL; DR : 결과 개체 참조 [첫 번째 피연산자]가 아닌 null경우 반환됩니다. 그렇지 않으면 두 번째 피연산자의 값 (일 수 있음
null)이 반환됩니다.

--------------------------------------------------------------------------------

엘비스 운영자는 많은 프로그래밍 언어, 예를 들어 코 틀린뿐만 아니라 그루비 또는 C #의 일부입니다. 나는 찾을 위키 백과의 정의는 매우
정확한 :

> 특정 컴퓨터 프로그래밍 언어에서 Elvis 연산자 ?: 는 피연산자가 인 경우 첫 번째 피연산자를 반환 하고 그렇지 않으면 두 번째
> 피연산자를 평가하여 반환 하는 이항 연산자 입니다 true. 이는 해당 언어 (및 기타 여러 언어)에서 발견 되는 삼항 조건 연산자 , 의
> 변형입니다? : . Elvis 연산자는 두 번째 피연산자가 생략 된 삼항 연산자입니다 .

특히 Kotlin의 경우 다음 사항이 적용됩니다.

> 일부 컴퓨터 프로그래밍 언어는이 연산자에 대해 다른 의미를 가지고 있습니다. 첫 번째 피연산자가 부울을 생성해야하는 대신 객체 참조가
> 생성되어야합니다 . 결과 객체 참조가가 아닌 null경우 반환됩니다. 그렇지 않으면 두 번째 피연산자의 값 (일 수 있음 null)이
> 반환됩니다.

예 :



x ?: y // yields `x` if `x` is not null, `y` otherwise.






--------------------------------------------------------------------------------


답변

엘비스 운영자는 다음에 콜론 물음표로 표시됩니다 : ?:그것은이 구문을 사용할 수 있습니다 :

first operand ?: second operand


간결한 코드를 작성할 수 있으며 다음과 같이 작동합니다.



경우 first operand null가 아닌 , 다음이 반환됩니다. 이 경우 null 인 경우 , 다음이 second operand반환됩니다.
제공된 값이 null 인 경우 nullable이 아닌 값을 제공하므로식이 null 값을 반환하지 않도록 보장하는 데 사용할 수 있습니다.

--------------------------------------------------------------------------------

예 (Kotlin에서) :

fun retrieveString(): String {    //Notice that this type isn't nullable
    val nullableVariable: String? = getPotentialNull() //This variable may be null

    return nullableVariable ?: "Secondary Not-Null String"
}


이 경우 계산 된 값이 getPotentialNullnull이 아니면 retrieveString; 널이면 두 번째 표현식 "Secondary
Not-Null String"이 대신 리턴됩니다.

또한 오른쪽 표현식은 왼쪽이 null 인 경우 에만 평가 됩니다 .



코 틀린, 당신은 같은 표현을 사용할 수 second operand등으로, throw Exception표현

return nullVariable ?: throw IllegalResponseException("My inner function returned null! Oh no!")


--------------------------------------------------------------------------------

Elvis Operator라는 이름은 유명한 미국 가수 Elvis Presley 에서 유래했습니다 . 그의 헤어 스타일은 물음표와 비슷합니다.



출처 : Wojda, I. Moskala, M. Android Development with Kotlin. 2017. Packt 출판







--------------------------------------------------------------------------------


답변

이것은 Elvis 연산자 라고 불리며 그것은 … 정확히 당신이 질문에서 설명한 것과 같습니다. 왼쪽이 null값이면 대신 오른쪽을 반환합니다.
그렇지 않으면 왼쪽에있는 값을 반환합니다.

a ?: b의 약어입니다 if (a != null) a else b.

유형이있는 더 많은 예 :

val x: String? = "foo"
val y: String = x ?: "bar"      // "foo", because x was non-null    

val a: String? = null
val b: String = a ?: "bar"      // "bar", because a was null






--------------------------------------------------------------------------------


답변

의를 살펴 보자 (고화질)를 :

> nullable 참조 r이있을 때 “r이 null이 아니면 사용하고, 그렇지 않으면 null이 아닌 값 x를 사용”이라고 말할 수 있습니다.

?:(엘비스) 연산자는 상세를 방지하고 정말 간결한 코드를 만든다.

예를 들어, 많은 컬렉션 확장 함수 null가 폴백으로 반환 됩니다.

listOf(1, 2, 3).firstOrNull { it == 4 } ?: throw IllegalStateException("Ups")


?:여러 계층의 폴 백이있는 경우에도 폴백 케이스를 효율적으로 처리 할 수있는 방법을 제공합니다. 그렇다면 다음과 같이 Elvis 연산자를
곱하기 만하면됩니다.

val l = listOf(1, 2, 3)

val x = l.firstOrNull { it == 4 } ?: l.firstOrNull { it == 5 } ?: throw IllegalStateException("Ups")


만약 그렇지 않다면 똑같이 표현한다면 더 읽기 어려운 코드가 될 것입니다.





--------------------------------------------------------------------------------


답변

간단히 우리는 두 손을 가지고 있다고 말할 수 있습니다. 당신은 알고 싶어요, 당신의 왼손이 지금 작동하고 있습니까?. 왼손이 작동하지
return empty않으면busy

Java의 예 :

private int a;
if(a != null){
    println("a is not null, Value is: "+a)
}
else{
    println("a is null")
}


Kotlin의 예 :

val a : Int = 5
val l : Int = if (a != null) a.length else "a is null"






--------------------------------------------------------------------------------


답변

기본적으로 Elvis의 왼쪽이 어떤 이유로 null을 반환하면 대신 오른쪽이 반환됩니다.

즉

val number: Int? = null
println(number ?: "Number is null")


따라서 number가 NOT null이면 숫자 를 인쇄하고 그렇지 않으면 “Number is null”을 인쇄합니다.





--------------------------------------------------------------------------------


답변

Kotlin의 elvis 연산자는 null 안전에 사용됩니다.

x = a ?: b


상기 코드에서 x의 값이 할당 될 aA가없는 경우를 null하고 b있는 경우가 a있다 null.

elvis 연산자를 사용하지 않는 동등한 kotlin 코드는 다음과 같습니다.

x = if(a == null) b else a






--------------------------------------------------------------------------------







글 탐색

1 2 … 42,459 다음 페이지 →


최신 글

 * [kotlin] 무엇입니까? : Kotlin에서 수행합니까? (엘비스 오퍼레이터)
 * [java] “BEGIN_OBJECT가 필요하지만 1 행 1 열에서 STRING이었습니다.”
 * [oop] 가변 대 불변 개체
 * [c#] Json.net은 파생 유형을 직렬화 / 역 직렬화합니까?
 * [android] 단검 2를 사용하여 ViewPager 내에서 동일한 조각의 ViewModel을 주입하는 방법
 * [ruby-on-rails] 루비 % r {} 표현식
 * [python] 두 문자열을 연결하기 위해 ‘+’를 사용하지 않는 이유는 무엇입니까?
 * [python] 파이썬의 사전에서 속성 설정
 * [sed] 각 줄 끝에 텍스트 추가
 * [android] 기기에 프로세스가 표시되기를 기다리는 시간이 초과되었습니다.


카테고리

카테고리 카테고리 선택하기 Android Apple C# C++ Git Html JAVA JAVASCRIPT Linux&Unix Program
PYTHON Server 쇼핑


태그

.net android angular angularjs arrays asp.net asp.net-mvc bash c c# css database
django docker html ios iphone java javascript jquery json linux macos mysql
node.js objective-c pandas php postgresql python r reactjs regex ruby
ruby-on-rails shell sql sql-server string swift typescript vim visual-studio
windows xcode

Copyright © daplus.net - Powered by Naya