গ্রোভিতে গল্ফ করার টিপস


14

যেহেতু আমি অনেক প্রশ্ন তাদের আগ্রহী ভাষায় গল্ফ করার জন্য টিপস জিজ্ঞাসা করতে দেখেছি, তাই আমি আমার প্রিয় ভাষা: গ্রোভি জিজ্ঞাসা করার সিদ্ধান্ত নিয়েছি। লোকেরা কিছু টিপস এবং কৌশল দিতে পারে যা গ্রোভির সাথে গল্ফ করার জন্য ব্যবহৃত হবে।


1
আচ্ছা এটি খুব জনপ্রিয় নয়, এটি কি :-(
আরমান্ড

@ অ্যালিসন: আমার কাছে খারাপ লাগছে, কারণ এই সাইটে গ্রোভির জন্য কোনও গল্ফ টিপ নেই :(
পিঁপড়ার

2
আমাদের শুরু করার জন্য আপনার কাছে কোনও পরামর্শ আছে?
আরমান্ড

উত্তর:


5

আমি এই পুরো গল্ফিং জিনিসে নতুন, আমি এ পর্যন্ত যা পেয়েছি:

বন্ধ ব্যবহারগুলি কার্যকরী নয়:

ডিফ এ (খ) {প্রিন্ট বি

এর চেয়ে লম্বা

a = it এটি মুদ্রণ করুন}

আপনি অ্যারেতে একটি নেতিবাচক সূচক ব্যবহার করতে পারেন এবং আকারের জন্য একটি উপাধী হিসাবে তালিকাগুলি -

সি = "এবিসি"
d = ["ক", "খ", "গ"]

সি [সি। সাইজ () - 1] == গ [-1] টিপুন
সি [সি। সাইজ () - 2] == সি [-2] টিপুন
দাবী করুন [d.size () - 1] == d [-1]
দাবী করুন ডি.লাস্ট () == ডি [-1]

স্প্রেড অপারেটর সংগ্রহের জন্য একটি শর্টকাট:

দাবী করুন * * সাইজ () == d.collect {it.size ()}

বাছাইয়ের জন্য স্পেসশিপ অপারেটরটি ব্যবহার করুন:

e = [54,5,12]
assert e.sort{a,b->a<=>b}==e.sort{a,b->a<b?-1:+1}
assert e.sort{a,b->a<=>b}==e.sort{a,b->if (a>b) {return(-1)} else {return(+1)}}

রূপান্তরগুলি সম্পাদনা করুন:

assert "123" as int == "123".toInteger()

যদি কোনও কিছুর তালিকাতে *.Xস্প্রেড অপারেটর প্রায়শই লিখিত হতে পারে.X
সিফ্রিক

3

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

উদাহরণস্বরূপ নীচের স্নিপেট চতুর্থ ব্যবহারের পরে প্রদান করবে:

''.metaClass.r<<{i->(int)Math.random()*i}
''.r(12)

টিপ গল্ফিং সম্পাদনা:

0.metaClass.r<<{i->(int)Math.random()*i}
0.r(12)

বা, আপনি জানেন:

r={(int)Math.random()*it}
r(12)

2

grep সংক্ষিপ্ত এবং বেশ কয়েকটি সমস্যা নিয়ে কাজ করে

শূন্যস্থানগুলির সাথে তালিকা হিসাবে এবং নেতৃস্থানীয় উপাদানগুলি ছাড়াই একটি স্ট্রিংয়ের চরগুলি পান: 'ABC XYZ'.grep()প্রত্যাবর্তন[A, B, C, , X, Y, Z]

রেজিপ্সপ সহ গ্রেপ উচ্চতর ক্ষেত্রে রূপান্তরিত করার চেয়ে সংক্ষিপ্ত, যদি প্রয়োজন হয়: it.grep(~/(?i)$c/)পরিবর্তেit.toUpperCase().grep(c)


1
'ABC XYZ'as Setএকটি চরিত্রটি ছোট এবং এটি বেশিরভাগ জায়গাতেই কাজ করে
মার্টি নিল

2

অবজেক্টের তালিকা থেকে একটি অ্যারে নেওয়া

আপনার যদি অবজেক্টগুলির একটি তালিকা থাকে তবে:

def users = [[user:'A',id:1],[user:'B',id:2],[user:'C',id:3]]

আপনি একটি নির্দিষ্ট সম্পত্তি ব্যবহার করে একটি অ্যারেলিস্ট তৈরি করতে পারেন:

def userIds = users*.id // [1, 2, 3] no explicit loops!

বোনাস: গ্রোভী ... কারাগারে!

ওয়েল, গ্রেস ফ্রেমওয়ার্কে আমাদের একাধিক গুণাবলীর সাহায্যে একটি নির্বাচন থেকে অনেকগুলি মান অবশ্যই পাওয়া উচিত । আপনি লুপগুলি, সমতল এবং অন্যান্য প্রোগ্রামিংগুলিকে আরও সাধারণ কাঠামো ব্যবহার করতে পারেন তবে কিছু লাইন সংরক্ষণ করতে পারেন। আপনার যদি পছন্দ মতো থাকে তবে:

<select id="users" multiple="true" name="users">
    <option value="193">User A</option>
    <option value="378">User B</option>
    <option value="377">User C</option>
</select><%-- No Grails tags for now --%>

তারপরে, আপনার নিয়ামকটিতে আপনি সহজভাবে লিখতে পারেন:

def aListOfUsers = User.getAll(params.list('userIds'))

1
এই প্রশ্নটি গ্রিলস গল্ফিং টিপস গ্রহণ করবে? আমি স্বীকার করি যে আমি স্নাইপারদের ডাউনওয়েতে ভয় পাই ...
ভিক্টর এফ

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