যে কেউ এর মধ্যে পার্থক্য ব্যাখ্যা করতে পারবেন useএবং requireউভয় যখন সরাসরি এবং ব্যবহৃত হিসাবে :useএবং :requireমধ্যে nsম্যাক্রো?
যে কেউ এর মধ্যে পার্থক্য ব্যাখ্যা করতে পারবেন useএবং requireউভয় যখন সরাসরি এবং ব্যবহৃত হিসাবে :useএবং :requireমধ্যে nsম্যাক্রো?
উত্তর:
requireবোঝা libs (যা ইতিমধ্যে লোড হয় না), useএকই প্লাস এটি তাদের নাম স্পেস দিয়ে বোঝায় clojure.core/refer(যাতে আপনি এর :excludeমত ইত্যাদি ব্যবহারের সম্ভাবনা পান clojure.core/refer)। উভয় nsসরাসরি না বরং ব্যবহারের জন্য সুপারিশ করা হয়।
requireএবং এর সাথে বাহ্যিক ফাংশনগুলি অন্তর্ভুক্ত করা মুশকিল refer। আপনি নেমস্পেস দ্বন্দ্বগুলি এড়ান, আপনি কেবলমাত্র প্রকৃতভাবে ব্যবহার / প্রয়োজন প্রয়োজনীয় ফাংশন অন্তর্ভুক্ত করেন এবং আপনি প্রতিটি ফাংশনের অবস্থান স্পষ্টভাবে ঘোষণা করেন:
(ns project.core
(:require [ring.middleware.reload :refer [wrap-reload]]))
এই ফাংশনটির নামস্থানটির সাথে এটি পূর্বনির্ধারণ করে আমাকে আরম্ভ করতে হবে না:
(wrap-reload) ; works
আপনি যদি এটি ব্যবহার না করেন তবে আপনাকে referএটি নেমস্পেসের সাথে উপসর্গ করা দরকার:
(ring.middleware.reload/wrap-reload) ; works if you don't use refer in your require
আপনি যদি এর useপরিবর্তে চয়ন করেন তবে (বেশ কিছু) সর্বদা ব্যবহার করুন only:
(ns project.core
(:use [ring.middleware.reload :only [wrap-reload]]))
অন্যথায় আপনি সবকিছু অন্তর্ভুক্ত করছেন, একে অপ্রয়োজনীয় বৃহত ক্রিয়াকলাপ উভয়ই করে তুলছেন এবং অন্যান্য প্রোগ্রামারদের কোথায় ফাংশনগুলি রয়েছে তা খুঁজে পাওয়ার জন্য খুব বিভ্রান্তিকর।
এছাড়াও, আমি ক্লোজার নামের স্থানগুলি সম্পর্কে আরও শেখার জন্য একটি উত্স হিসাবে এই ব্লগটিকে উচ্চতর প্রস্তাব দিচ্ছি ।
(:use foo :only [bar])এবং (:require foo :refer [bar])? এটি করার দুটি উপায় আছে বলে মনে হচ্ছে অদ্ভুত।
(:require .. :refer ..)একই জিনিসটি করার একটি নতুন উপায় :useযা আপনাকে কার্যকরভাবে অবমূল্যায়ন করতে দেয় , যার কিছু ত্রুটি রয়েছে।
ব্যবহারের বিষয়টি নিশ্চিত করুন যে আপনি যখনই কোনও ফাংশন কল করতে চান প্রতিবার নেমস্পেসের বানান না করেই এটি আরও সহজ করে তোলে যদিও এটি নেমস্পেস বিবাদ তৈরি করে জিনিসগুলিতে গোলমালও করতে পারে। "ব্যবহার" এবং "আবশ্যক" এর মধ্যে একটি ভাল মাঝারি স্থলটি হ'ল আপনি প্রকৃতপক্ষে ব্যবহার করেন এমন একটি নেমস্পেস থেকে ফাংশনগুলি 'ব্যবহার' করা।
এই ক্ষেত্রে:
(ব্যবহার করুন '[ক্লোজার-অবদান.অডাক্ট-স্ট্রিমস: কেবল (লেখক পাঠক)])বা আরও ভাল, নামের স্থান সংজ্ঞাতে ফাইলের শীর্ষে এটি নির্দিষ্ট করুন:
(এনএস কম.মে.প্রজেক্ট) (: ব্যবহার করুন [Clojure.contrib.test-is: কেবল (ডিফিট রান রান-টেস্ট)]))
(ns ...)সিনট্যাক্স (শ্লেষ) অন্তর্ভুক্ত করার জন্য ধন্যবাদ ; আমি এটি খুঁজছিলাম কিন্তু আমি যে উদাহরণগুলি পেয়েছি সেগুলি সরল ছিল (use ...)।
(require '[namepase :refer [var-name1 var-name2]])