수색…


기본 사용법

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