গ্রোভিতে মানচিত্রের মধ্য দিয়ে লুপ করবেন?


175

আমার একটি খুব সাধারণ কাজ আমি গ্রোভিতে করার চেষ্টা করছি তবে এটি কাজ করতে পারে বলে মনে হয় না। আমি কেবল গ্রোভিতে কোনও মানচিত্রের অবজেক্টটি লুপ করার চেষ্টা করছি এবং কী এবং মানটি মুদ্রণ করব তবে এই কোডটি কার্যকর হয় না।

// A simple map
def map = [
        iPhone : 'iWebOS',
        Android: '2.3.3',
        Nokia  : 'Symbian',
        Windows: 'WM8'
]

// Print the values
for (s in map) {
    println s + ": " + map[s]
}

আমি আউটপুটটি এর মতো দেখতে পাওয়ার চেষ্টা করছি:

iPhone: iWebOS
Android: 2.3.3
Nokia: Symbian
Windows: WM8

কেউ কীভাবে এটি করবেন তা বিস্তারিতভাবে বলতে পারেন ??


যেমন আপনি উত্তরগুলিতে দেখেছেন, সমস্যাটি হ'ল মানচিত্রের পুনরাবৃত্তি আপনাকে "এন্ট্রি" একটি সংকলন দেয়, আপনি ধরে নিচ্ছিলেন যে এটি আপনাকে কীগুলি দেবে এবং আপনি মানগুলি সন্ধান করবেন। আপনি যদি সেভাবে এটি করতে চান তবে মানচিত্রের উপরে পুনরাবৃত্তি করুন key কীসেট () এবং বাকিগুলি আপনার প্রত্যাশা অনুযায়ী কাজ করবে।
বিল কে

যদি আপনি ব্যবহার এটা কাজ করা উচিত s.key& s.valueলুপ জন্য আপনার কোড ভিতরে।
inblueswithu

উত্তর:


328

বন্ধ সহ বেশ সহজ:

def map = [
           'iPhone':'iWebOS',
           'Android':'2.3.3',
           'Nokia':'Symbian',
           'Windows':'WM8'
           ]

map.each{ k, v -> println "${k}:${v}" }

2
কৌতূহলের বাইরে, গ্রোভি ভাষার ডক্সে এই নথিটি কোথায় আছে ( আমি এটি মনে করি না! )? আমার ধারণা আমি গ্রোভী নবজাতকের দৃষ্টিকোণ থেকে ভাবছি, আপনি এটি কীভাবে জানবেন?
স্মিব

10
@ সিমিব: সবকিছুই নথিভুক্ত, এখানে একবার দেখুন: গ্রোভি -আলং.আর.জি.গ্রোভি
জ্যাক

101

গ্রুভি ডক্সেfor প্রদর্শিত হিসাবে আপনি কোনও লুপ ব্যবহার করতে পারেন :

def map = ['a':1, 'b':2, 'c':3]
for ( e in map ) {
    print "key = ${e.key}, value = ${e.value}"
}

/*
Result:
key = a, value = 1
key = b, value = 2
key = c, value = 3
*/

ক্লোজারের forবিপরীতে লুপ ব্যবহার করার একটি সুবিধা eachহ'ল ডিবাগিং সহজ, কারণ আপনি একটি eachক্লোরের ভিতরে ব্রেক পয়েন্টটি আঘাত করতে পারবেন না (নেটবিন ব্যবহার করার সময়)।


আমি জিজিটিএস ৩.২ ব্যবহার করি এবং ক্লোজারগুলিতে নিয়মিত ব্রেক পয়েন্ট নির্ধারণ করি ("প্রতিটি" ক্লোজার সহ)। সমস্যাটি এফ 6 ব্যবহার করে একটি বন্ধ হয়ে যাওয়ার পদক্ষেপ নিচ্ছে, কারণ এটি পুরো জিনিসটিই ছাড়িয়ে যাবে। প্রযুক্তিগতভাবে, আপনি F5 টি বেশ কয়েকবার আঘাত করতে পারেন এবং শেষ পর্যন্ত সেখানে শেষ করতে পারেন, তবে ব্রেক ব্রেকটি দ্রুত।
ফিলিপ

আপডেট উত্তর। আমি নেটবিয়ান ব্যবহার করছি এবং এর গ্রোভি / গ্রেিলসের ডিবাগিং উপ-সমান।
ubiquibacon

4
প্লাস আপনি লুপের জন্য একটি এবং আউট ভাঙ্গতে পারে .each
আলেকজান্ডার সুর্যাপেল

1
@ আলেকজান্ডারসুরফেল আপনি ঠিক বলেছেন যে আপনি breakপ্রস্থান করতে ব্যবহার করতে পারবেন না each, তবে আপনি ব্যবহার করতে পারেনreturn
ইউবিকিবাকন

7
@ ইউবিকিবাকন না আপনি পারবেন না না returnঅনুরূপ । continuebreak
আলেকজান্ডার সুরাপেল

20

লুপের জন্য ব্যবহার করার সময়, এর মান হ'ল মানচিত্র Eএন্ট্রি উপাদান, যার অর্থ আপনি s.key থেকে কী এবং s.value থেকে মান পেতে পারেন



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