কোন ফাংশন এবং কমান্ডের মধ্যে পার্থক্য কী?


35

এখানে প্রশ্নোত্তর পোস্ট করার সময় লোকেরা মাঝে মাঝে "ফাংশন" এবং "কমান্ড" শব্দটি আন্তঃবিন্যভাবে ব্যবহার করে। অন্যান্য ক্ষেত্রে, লোকেরা কোডের নির্দিষ্ট অংশগুলি নিয়ে আলোচনা করতে কেবল দুটি পদগুলির মধ্যে একটির ব্যবহার করে। যেহেতু তাদের পোস্টগুলি অন্যান্য বিষয়গুলিতে ফোকাস করে, তারা কেন একটি শব্দ ব্যবহার করছে তবে অন্যটি ব্যবহার করছে না explain তাই:

প্রশ্ন: ইমাস লিস্পে একটি ফাংশন এবং কমান্ডের মধ্যে পার্থক্য কী?


13
অবশ্যই এটি করার আপনার যথাযথ অধিকার রয়েছে এবং আমি নিশ্চিত যে এর দ্বারা কিছু লোককে সহায়তা দেওয়া হবে। কিন্তু FWIW আমি প্রতি সামান্য জিনিস এটি শেখাবে কাউকে ভালো হতে পারে এর জন্য এখানে Q & A- পক্ষে নই এ গিয়ে Emacs নিজেই জিজ্ঞাসা সম্পর্কে। এটি এমন একটি, আইএমও - এটি খুঁজে পাওয়া শক্ত নয়, এবং ইমাকস একটি ভাল উত্তর দেয়। C-h iচয়ন Elisp ম্যানুয়াল , i command- রাখে ডান নোড What is a function?, যা এই টলটলে সব করে তোলে। Emacs জিজ্ঞাসা করতে ব্যবহারকারীদের সহায়তা করুন। (জাস্ট এক মতামত।)
ড্রিউ

1
এই বলেছিল, আপনি প্রশ্নের উত্তর দিয়েছেন এবং উত্তরটি ভাল করে দিয়েছেন।
ড্র করুন

5
@ ড্র আমি লোকদের প্রথমে ইমাস জিজ্ঞাসা করতে শেখাতে 100% সম্মত। এই নির্দিষ্ট প্রশ্নোত্তরের মূল উদ্দেশ্য শর্তাবলীর সঠিক ব্যবহারের প্রচার করা এবং প্রয়োজনে কমান্ড এবং কার্যাবলির মধ্যে পার্থক্য সম্পর্কে ব্যবহারকারীদের সচেতন করা: কখনও কখনও লোকেরা সচেতন হয় না যে এটি একটি প্রশ্ন যা তাদের জিজ্ঞাসা করা উচিত , এবং এগুলিকে নির্দেশ করার জন্য একটি জেনেরিক সংস্থান থাকা মন্তব্যে বারবার একই বিষয়টিকে পুনরাবৃত্তি করার চেয়ে সহজ।
itjeyd

1
এটি বলেছিল,
ইমাসের

1
আমরা সম্মতি জানাই - এটি ব্যবহারকারীদের ইমাস ব্যবহার করতে সহায়তা করার বিষয়ে। এই সাইটটি সেই লক্ষ্যের একটি মাধ্যম।
ড্র হয়েছে

উত্তর:


44

প্রতিটি কমান্ড একটি ফাংশন, তবে প্রতিটি ফাংশনও একটি আদেশ নয়। 1

একটি আদেশ একটি কল অন্তর্ভুক্ত interactive; এই কারণেই কমান্ডগুলি সাধারণত "ইন্টারেক্টিভ ফাংশন" হিসাবে পরিচিত। কমান্ডগুলির মাধ্যমে আহ্বান করা যেতে পারে M-x name-of-command RETএবং সেগুলি একটি মূল অনুক্রমের সাথেও আবদ্ধ হতে পারে। নিয়মিত ফাংশন কি না একটি কল অন্তর্ভুক্ত interactiveপারেন না ব্যবহার বলা যেতে M-x, এবং আপনি বেঁধে একটি কী অনুক্রম না পারেন তাদের। ইন্টারেক্টিভ নয় এমন একটি ক্রিয়াকলাপ চালানোর জন্য, আপনি M-:( eval-expression) টিপতে পারেন , প্যারেন্টেসিসে আবদ্ধ থাকা যে কোনও যুক্তিগুলির জন্য মানগুলির পরে ফাংশনটির নাম লিখতে পারেন এবং টিপতে পারেন RET:

M-: (name-of-function arg1 arg2 arg3) RET

যদি ফাংশনটি বর্তমান বাফারে পরিচালিত হওয়ার কথা না হয় তবে আপনি প্রবেশও করতে পারেন

(name-of-function arg1 arg2 arg3)

মধ্যে *scratch*বাফার এবং প্রেস C-x C-e( eval-last-sexpবিন্দু সহ) সমাপনী প্রথম বন্ধনী পরে অবস্থান।

barকমান্ড হিসাবে একটি ফাংশন উপলব্ধ করতে আপনি এটি একটি কাস্টম ইন্টারেক্টিভ ফাংশন ( foo) এ মোড়ানো করতে পারেন :

(defun foo ()
  (interactive)
  (bar))

অবশ্যই, যদি barএক বা একাধিক যুক্তি লাগে তবে fooসঠিকভাবে কাজ করার জন্য আপনাকে সেগুলি সরবরাহ করতে হবে।

আপনি যদি লোকেরা "ফাংশন" এবং "কমান্ড" পদটি একে অপরকে ব্যবহার করে দেখতে পান তবে এটি সূচিত হতে পারে (প্রসঙ্গের উপর নির্ভর করে) যে তারা অন্তর্নিহিত ধারণাগুলির মধ্যে পার্থক্য সম্পর্কে অবগত নয়।


1 নোট করুন যে আমি defunএখানে এখানে কথা বলছি । @ স্টেফান মন্তব্যগুলিতে যেমন উল্লেখ করেছেন, কীবোর্ড ম্যাক্রোগুলি একটি বিশেষ ক্ষেত্রে: এগুলি কমান্ড হিসাবে বিবেচনা করা যেতে পারে , তবে সেগুলি কার্যকরী নয়।


5
মাইনর নিতপিক: interactive"কল " গুলিকে সাধারণত ডিক্লেয়ারেশন বলা হয় (ফাংশনটি আসলে কিছুই করে না)।
shosti

5
@ আইসজেড: আসলে, না, এমন কমান্ডগুলিও রয়েছে যা কার্যকর নয়। এটি কীবোর্ড ম্যাক্রোগুলির ক্ষেত্রে । উদাহরণস্বরূপ M-: (commandp [?a]) RETউইল (সংশোধন) আপনাকে জানাতে পারে যে [?a]একটি আদেশ, তবে এটি কোনও ফাংশন নয়।
স্টিফান

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