खोज…


मूल उपयोग

Groovy का सुरक्षित नेविगेशन ऑपरेटर NullPointerException s से बचने की अनुमति देता है, जब चर मान पर विधियों या विशेषताओं तक पहुँच हो सकती है जो null मानों को ग्रहण कर सकती है। यह 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_value?.name एक null मान लौटाएगा। इस प्रकार length() को NullPointerException से बचने के लिए null मान पर एक चेक प्रदर्शन करना होगा।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow