groovy
안전한 탐색 연산자
수색…
기본 사용법
Groovy의 안전한 탐색 연산자 는 null
값을 가정 할 수있는 변수의 메서드 나 속성에 액세스 할 때 NullPointerException
을 피할 수 있습니다. nullable_var == null ? null : nullable_var.myMethod()
과 동등 nullable_var == null ? null : nullable_var.myMethod()
def lst = ['foo', 'bar', 'baz']
def f_value = lst.find { it.startsWith('f') } // 'foo' found
f_value?.length() // returns 3
def null_value = lst.find { it.startsWith('z') } // no element found. Null returned
// equivalent to null_value==null ? null : null_value.length()
null_value?.length() // no NullPointerException thrown
// no safe operator used
null_value.length() // NullPointerException thrown
안전한 항법 연산자의 연결
class User {
String name
int age
}
def users = [
new User(name: "Bob", age: 20),
new User(name: "Tom", age: 50),
new User(name: "Bill", age: 45)
]
def null_value = users.find { it.age > 100 } // no over-100 found. Null
null_value?.name?.length() // no NPE thrown
// null ?. name ?. length()
// (null ?. name) ?. length()
// ( null ) ?. length()
// null
null_value?.name.length() // NPE thrown
// null ?. name . length()
// (null ?. name) . length()
// ( null ) . length() ===> NullPointerException
null_value?.name
의 안전한 탐색은 null
값을 반환합니다. 따라서 length()
는 NullPointerException
을 피하기 위해 null
값에 대한 검사를 수행해야합니다.
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow