ক্লোজার ব্যবহার করে কোড গল্ফ করার জন্য আপনার টিপস কী?
এই প্রশ্নের উদ্দেশ্য হ'ল ক্লজুরের সাথে সুনির্দিষ্ট এবং সাধারণ কোড-গল্ফিং সমস্যায় ব্যবহার করা যেতে পারে এমন কৌশলগুলির একটি তালিকা সংগ্রহ করা।
ক্লোজার ব্যবহার করে কোড গল্ফ করার জন্য আপনার টিপস কী?
এই প্রশ্নের উদ্দেশ্য হ'ল ক্লজুরের সাথে সুনির্দিষ্ট এবং সাধারণ কোড-গল্ফিং সমস্যায় ব্যবহার করা যেতে পারে এমন কৌশলগুলির একটি তালিকা সংগ্রহ করা।
উত্তর:
ল্যাম্বডাসের জন্য পাঠক সিনট্যাক্স ব্যবহার করুন।
সুতরাং ব্যবহার
#(+ % %2 %3)
পরিবর্তে
(fn [x y z] (+ x y z))
আপনি কিছু সময় হোয়াইটস্পেস নির্মূল করতে পারেন:
#(if (< % 0) (- %) %)
#(if(< % 0)(- %)%)
#(+ % %2 %3)
দ্বারা সমতুল্য +
।
স্ট্রিং এবং অন্য যে কোনও কিছুর মধ্যে:
(println(+"Hello, World!"1))
বন্ধনী এবং অন্য যে কোনও কিছুর মধ্যে:
(for[x(range 5)](* x x))
একটি সংখ্যা এবং বিল্টিন বা পরিবর্তনশীল নাম ব্যতীত অন্য কিছুর মধ্যে:
Allowed:
(+ 1"Example")
(map{1"-1"2"-2"}[1 2 3])
Not allowed:
(+1 2)
মধ্যে @
(পরমাণু জন্য ডি-রেফারেন্স) এবং বন্ধনী।
@
let
করতে এবং কিছু জায়গা থেকে মুক্তি পেতে সক্ষম হতে পারে ।
#(+ 1(first%))
=#(+ 1 (first %))
স্ট্রিংগুলি অক্ষরের ক্রম হিসাবে বিবেচনা করা যেতে পারে
উদাহরণস্বরূপ অক্ষরে বর্ণমালা অনুসারে বাছাই করা:
(sort "hello")
=> (\e \h \l \l \o)
nth ... 0
পরিবর্তে ব্যবহার করুনfirst
একটি সংগ্রহ প্রথম উপাদান পেতে, ব্যবহার (nth ... 0)
উপর first
একটি বাইট সংরক্ষণ:
(first[2 3 4]): 14 bytes
(nth[2 3 4]0): 13 bytes (saves a byte!)
second
(2 বাইট)
([2 3 4]1)
সূচী 1 এ উপাদানটি প্রদান করে This উদাহরণস্বরূপ ইনপুট ফর্ম্যাটটি নমনীয় হলে এটি উপকারী হতে হবে।
উদাহরণস্বরূপ, আপনি ব্যবহার করার দরকার হয় partition
বা frequencies
একাধিক বার, এটা তাদের একটি একটি একক বাইট প্রতীক জুড়তে উপকারী হতে পারে let
ম্যাক্রো। আবার যদি আপনার let
অন্যথায় প্রয়োজন না হয় তবে এটি উপযুক্ত হবে না , এবং ফাংশনটির নাম তুলনামূলকভাবে ছোট is