ওয়েল ল্যাম্বডাসের অন্যান্য ফাংশন সংজ্ঞার মতো নিয়মিত ডকস্ট্রিং থাকতে পারে:
(lambda ()
"I'm a docstring!"
(+ foo bar))
সুতরাং আপনি ব্যবহার করতে পারেন:
(let ((foo 1)
(bar 2))
`(lambda ()
,(format "Function which sums foo=%s and bar=%s" foo bar)
(+ foo bar)))
আপনি কেন কোনও বেনামি ফাংশনে ডক্ট্রিং চান তা অন্য প্রশ্ন, যা আপনার গ্রহণ করা পদ্ধতির উপর প্রভাব ফেলতে পারে।
উদাহরণস্বরূপ, আপনি যদি এটি কোনও কী-তে আবদ্ধ করার পরিকল্পনা করে থাকেন এবং আপনি C-h k
সেই সহায়তা প্রদর্শন করতে চান তবে আপনি এই পদ্ধতির ব্যবহার করতে পারেন, তবে অবশ্যই সহায়তাটি ফাংশন অবজেক্টটি নিজেই প্রদর্শন করবে (ডাস্ট্রিং অন্তর্ভুক্ত), যা তাই নয় মহান; তবুও আপনি এই কাজ করতে পারে এবং আপনি হবে (উপরন্তু) চমত্কারভাবে বিন্যস্ত সংস্করণ দেখুন:
(global-set-key
(kbd "C-c a")
(let ((foo 1)
(bar 2))
`(lambda ()
,(format "Function which sums foo=%s and bar=%s" foo bar)
(interactive)
(+ foo bar))))
তবে আপনি প্রতীক ব্যবহার করতে পছন্দ করতে পারেন। আপনি একটি নিরবচ্ছিন্ন প্রতীক সহ একটি বেনামী ফাংশনটি জোড়া দিতে পারেন , এবং এটি একই নামের অন্য কোনও চিহ্নের সাথে সাংঘর্ষিক হওয়ার বিষয়ে চিন্তা করবেন না। এটি সাহায্যকারীকে আরও পরিষ্কার করে তোলে, কারণ এটি ফাংশন অবজেক্টের চেয়ে প্রতীক নামটি প্রদর্শন করবে। এই দৃষ্টান্তে আমাদের কাছে লাম্বদা ফর্মটিতে defalias
এম্বেড করার পরিবর্তে ডকস্ট্রিংটি পাস করার বিকল্প রয়েছে ।
(global-set-key
(kbd "C-c a")
(let ((foo 1)
(bar 2))
(defalias (make-symbol "a-foo-bar-function")
(lambda ()
(interactive)
(+ foo bar))
(format "Function which sums foo=%s and bar=%s" foo bar))))
বা (এবং এটি খুব একই জিনিস) আপনি নিরবচ্ছিন্ন প্রতীকটি ক্যাপচার করতে এবং আপনার মূল কোড অনুসারে সরাসরি প্রতীক সম্পত্তি সেট করতে পারেন:
(global-set-key
(kbd "C-c a")
(let ((foo 1)
(bar 2)
(sym (make-symbol "a-foo-bar-function")))
(put sym 'function-documentation
(format "Function which sums foo=%s and bar=%s" foo bar))
(defalias sym
(lambda ()
(interactive)
(+ foo bar)))))
পার্শ্ব নোট হিসাবে, সচেতন থাকুন যে এই ফাংশনটি কেবলমাত্রfoo
এবং bar
যদি আপনি lexical-binding: t
আপনার লাইব্রেরির জন্য ব্যবহার করছেন তবে লেট-বাউন্ড মানগুলিকে সংশ্লেষ করতে চলেছে । যদি ফু ও বার গতিশীলভাবে আবদ্ধ থাকে তবে আমি যে ডকাস্ট্রিংগুলি তৈরি করেছি তা সম্ভবত রান-টাইমে সঠিক হবে না। যদিও আমরা গতিশীল ডকাস্ট্রিংসের সাহায্যে সেই পরিস্থিতিটি পূরণ করতে পারি । তথ্য নোড এর সম্পর্কে (elisp) Accessing Documentation
বলে documentation-property
:
যদি সম্পত্তি মানটি 'শূন্য' হয় না, কোনও স্ট্রিং নয় এবং কোনও ফাইলের পাঠ্যকে উল্লেখ না করে তবে স্ট্রিংটি পাওয়ার জন্য এটি লিস্প এক্সপ্রেশন হিসাবে মূল্যায়ন করা হয়।
প্রতীক-ভিত্তিক যে কোনও পদ্ধতির সাথে আমরা ডকুমেন্টেশন ফর্মটি কল সময়ে মূল্যায়ন করার জন্য উদ্ধৃত করতে পারতাম:
(defalias (make-symbol "a-foo-bar-function")
(lambda ()
(interactive)
(+ foo bar))
'(format "Function which sums foo=%s and bar=%s" foo bar))