গ্রোভি অ্যারে / হ্যাশ / সংগ্রহ / তালিকার উপাদানগুলি কীভাবে পরীক্ষা করবেন?


127

অ্যারেতে একটি উপাদান রয়েছে কিনা তা আমি কীভাবে আবিষ্কার করব? আমি ভেবেছিলাম এমন কিছু হতে পারে [1, 2, 3].includes(1)যা মূল্যায়ন করবে true


এই সমান উপাদান তালিকার যেখানে রয়েছে তাও আপনি সূচকটি খুঁজে পেতে পারেন?
অথর্ব জোহরি

2
@ অথর্বজোহরিassert [12,42,33].indexOf(42) == 1
রিগস

উত্তর:


138

.contains () হ'ল তালিকার সেরা পদ্ধতি তবে মানচিত্রের জন্য আপনাকে .containsKey () বা। কনটেনসভ্যালু () ব্যবহার করতে হবে

[a:1,b:2,c:3].containsValue(3)
[a:1,b:2,c:3].containsKey('a')

এবং, এছাড়াও, কোনও মানচিত্রের একটি নির্দিষ্ট কী এর অধীনে কিছু নাল মান নেই কিনা তা পরীক্ষা করার জন্য, নিম্নলিখিত অভিব্যক্তিটি পরীক্ষা করা যথেষ্ট if(aMap["aKey"]==aValue)
নীল মাকসুদভ

245

কিছু সিনট্যাক্স চিনি

1 in [1,2,3]

32
সাবধান হন। def m = [a: true]; 'a' in m→ সত্য এখনও def m = [a: false]; 'a' in m→ মিথ্যা!
জেসি গ্লিক

55

তালিকার জন্য, ব্যবহার করুন contains:

[1,2,3].contains(1) == true

16
সম্ভবত আপনি [1,2,3]। কন্টেন্টস (1) বলতে চেয়েছিলেন। কারণ আমি অনুমান করছি যে ফাংশনটি নিজেই ইতিমধ্যে একটি বুলিয়ান দেয়। আপনি কেন এটি আবার হার্ডকডযুক্ত 'সত্য' এর সাথে তুলনা করতে চান।
হর্ষে বুড়াদকার

6
@ হারশায়ে বুড়াদকার সত্যিই নিশ্চিত করতে true == trueঅবশ্যই অবশ্যই # রসিকতা
অটোমেটিকো

8

যদি আপনি সত্যিই কোনও অ্যারেলিস্টে আপনার অন্তর্ভুক্ত পদ্ধতিটি চান তবে কেবল এটি যুক্ত করুন:

ArrayList.metaClass.includes = { i -> i in delegate }

3

ডোমেনের মতো সামগ্রীর সংগ্রহের ক্ষেত্রে .contains () ব্যবহারের জন্য গুরুত্বপূর্ণ গটচা। ডোমেন ঘোষণাপত্রে যদি ওজবেক্টস সমান হয় কিনা তা নির্ধারণ করার জন্য যদি কোনও সমতুল্য অ্যান্ড হ্যাশকোড বা অন্য কিছু সমান () বাস্তবায়ন থাকে এবং আপনি এটিকে সেট করেছেন ...

import groovy.transform.EqualsAndHashCode
@EqualsAndHashCode(includes = "settingNameId, value")

তারপরে .contains (myObjectToCompareTo) সংগ্রহের প্রতিটি অবজেক্ট উদাহরণের জন্য ডেটা সহ MyObjectToCompareTo এর ডেটা মূল্যায়ন করবে। সুতরাং, যদি আপনার সমান পদ্ধতিটি নাচতে না পারে, যেমনটি আমার ছিল না, আপনি অপ্রত্যাশিত ফলাফল দেখতে পাবেন।


2
def fruitBag = ["orange","banana","coconut"]
def fruit = fruitBag.collect{item -> item.contains('n')}

আমি এটি এর মতো করেছিলাম তাই কেউ যদি এটি সন্ধান করে তবে এটি কাজ করে।



0

আপনি নিয়মিত প্রকাশের সাথে মিলগুলিও এর মতো ব্যবহার করতে পারেন:

boolean bool = List.matches("(?i).*SOME STRING HERE.*")
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.