গ্রোভিতে এই নাল চেক, এবং একটি খালি খালি চেক লেখার আরও ভাল উপায় কি?


108

কিছু যুক্তি সম্পাদনের আগে আমাকে কিছু কোডে শূন্য / খালি চেক করতে হবে । আমার নীচে আইটেম রয়েছে, কারণ আমি অনুভব করি যে !members?.emptyএটি সঠিক নয়।

নিম্নলিখিত লেখার জন্য কি গ্রোভিয়ার উপায় আছে?

if (members && !members.empty) {
    // Some Work
}

উত্তর:


221

সত্যিই একটি গ্রোভিয়ার ওয়ে আছে।

if(members){
    //Some work
}

যদি membersসংগ্রহ হয় তবে সবকিছু করেন । নাল চেকের পাশাপাশি খালি চেক (খালি সংগ্রহগুলি জোর করে false)। শিলা খাঁজকাটা সত্য । :)


4
আরও একটি "গ্রোভিয়ার" উপায়টি উদাহরণস্বরূপ যদি আপনি সদস্যদের মধ্যে থেকে সর্বাধিক বয়সের বিষয়ে আগ্রহী হন তবে আপনি নিম্নলিখিতগুলি লিখতে পারেন: সদস্য? .Age.max ()
বিটাকাকস

9
দ্রষ্টব্য: members?.age.max()সদস্যরা শূন্য হলে "নাল অবজেক্টে মেথড ম্যাক্স () প্রয়োগ করতে পারে না" দিয়ে ফুঁক দেওয়া হয়। আপনার প্রয়োজন হবেmembers?.age?.max()
গ্রিনজেন্ট

@ বিনোদজয়চন্দ্রন হ্যাঁ
দমাহাপাত্রো

4
না: গ্রিনজেন্টের সমাধানটি সেরা: উভয় সমাধানের জন্য পরীক্ষা করুন List members = null;এবং এর List members = [ [age: 12], [age: 24], [age: null], null ]বিপরীতে
বিটাকাকস

4
এই ধরণের চেক বেশিরভাগ ক্ষেত্রে কাজ করে তবে আপনার উদ্দেশ্যটি যদি ভেরিয়েবলটি নাল কিনা তা পরীক্ষা করে দেখানো হয় তবে আপনি এমন একটি প্রান্তের মামলাটি শেষ করতে পারেন যেখানে ভেরিয়েবলটি নাল নয় তবে একটি বুলিয়ান মিথ্যা
নিকোসডিম

0
!members.find()

আমি মনে করি এখন এই সমস্যাটি সমাধান করার সর্বোত্তম উপায় হল উপরের কোড। এটি গ্রোভির ১.৮.১ থেকে কাজ করে http://docs.groovy-lang.org/docs/next/html/groovy-jdk/java/util/ Collections.html#find () । উদাহরণ:

def lst1 = []
assert !lst1.find()

def lst2 = [null]
assert !lst2.find()

def lst3 = [null,2,null]
assert lst3.find()

def lst4 = [null,null,null]
assert !lst4.find()

def lst5 = [null, 0, 0.0, false, '', [], 42, 43]
assert lst5.find() == 42

def lst6 = null; 
assert !lst6.find()

4
যে সংগ্রহটিতে 1 টি নাল উপাদান রয়েছে তা খালি নয়, সুতরাং আপনার পরামর্শটি ভুল
ইউরা

4
যদি সংগ্রহটি শূন্য হয়?
ড্যান মারখাসিন

4
Def lst6 = নাল; ! জাহির lst6.find () এটি সঠিক - কোনো ত্রুটি দেখা দেয়
Zhurov কনস্টানটিন

0

এফওয়াইআই এই জাতীয় কোড কাজ করে (আপনি এটি কুরুচিপূর্ণ দেখতে পারেন, এটি আপনার অধিকার :)):

def list = null
list.each { println it }
soSomething()

অন্য কথায়, এই কোডটি বাতিল বা খালি চেক উভয়ই অকেজো:

if (members && !members.empty) {
    members.each { doAnotherThing it }
}

def doAnotherThing(def member) {
  // Some work
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.