আমি একটি "স্বচ্ছ 'পাস-থ্রো' ফাংশন র্যাপার" বলতে যা বুঝি তা একটি ফাংশন, আসুন এটি কল করুন wrapper, এটি তার সমস্ত যুক্তিটি অন্য কোনও ফাংশনে পাস করে ফলাফলটি ফিরিয়ে দেয়, আসুন এটি কল করুন wrappee।
এটি ইমাস লিস্পে কীভাবে হয়?
বিশেষ দ্রষ্টব্য: আদর্শ wrapperফাংশন অজ্ঞেয়বাদী সম্পর্কে wrappeeফাংশন স্বাক্ষর; যেমন এটি wrappeeযুক্তিগুলির সংখ্যা, অবস্থান, নাম ইত্যাদির কিছুই জানে না ; এটি কেবল তার সমস্ত তর্ক যুক্ত করে দেয় wrappee, ঠিক যেমন wrappeeএকটি বলা হয়েছিল। (যাইহোক, কল স্ট্যাকের সাথে কলটি কলটির সাথে প্রতিস্থাপনের wrapperসাথে গোলযোগ করার দরকার নেই wrappee))
আমি আমার প্রশ্নের একটি আংশিক উত্তর পোস্ট করেছি:
(defun wrapper (&rest args) (apply 'wrappee args))
ইন্টারেক্টিভ না হলে wrappeeএটি কেবল তখনই কাজ করে। স্পষ্টতই, ইন্টারেক্টিভ ফাংশনগুলি তাদের আর্গুমেন্টগুলি যেভাবে পেয়েছে তা জ্বলন্তভাবে আবৃত বিষয়গুলি থেকে আলাদা "চ্যানেল" উপস্থাপন করে । আমার এখনও যা প্রয়োজন, তাই ইন্টারেক্টিভ ফাংশন যেখানে রয়েছে তার ক্ষেত্রে স্বাক্ষরের সমান- জ্ঞানস্টিক অংশ p(&rest args)wrappee(&rest args)wrappee
(এই প্রশ্নটি এই আগের প্রশ্নটিতে বর্ণিত একটি সমস্যা দ্বারা অনুপ্রাণিত হয়েছিল ))
আমি যা জিজ্ঞাসা করছি তার আরও বিশদ বিবরণ প্রয়োজন হলে নীচে কয়েকটি উদাহরণ দেওয়া হল যা আমি পরে যাচ্ছি তার পাইথন এবং জাভাস্ক্রিপ্ট সমতুল্য দেখায়।
পাইথনে এমন একটি মোড়কের বাস্তবায়নের কয়েকটি মানক উপায় নীচে দেখানো হয়েছে:
def wrapper(*args, **kwargs):
return wrappee(*args, **kwargs)
# or
wrapper = lambda *args, **kwargs: wrappee(*args, **kwargs)
(এখানে *args"সমস্ত অবস্থানগত আর্গুমেন্ট" **kwargsবোঝায় , এবং "সমস্ত কীওয়ার্ড আর্গুমেন্ট" বোঝায় stands)
জাভাস্ক্রিপ্ট সমতুল্য এই জাতীয় কিছু হবে:
function wrapper () { return wrappee.apply(this, arguments); }
// or
wrapper = function () { return wrappee.apply(this, arguments); }
রেকর্ডের জন্য, আমি একমত নই যে এই প্রশ্নটি একাধিক যুক্তিযুক্ত কোনও ফাংশনে ম্যাপকারকে কীভাবে প্রয়োগ করতে হবে তার একটি সদৃশ । কেন দুটি ব্যাখ্যা আমার কাছে স্পষ্টতই আলাদা দেখায় তা বোঝাতে আমি ক্ষতিগ্রস্থ হয়ে পড়েছি। এটি জিজ্ঞাসা করার মতো যা "আপেলকে কেন কমলার সমতুল্য না বিবেচনা করা উচিত" ব্যাখ্যা করুন। নিছক প্রশ্নটি এতটাই পাগল, যে সন্দেহ করে যে কোনও ব্যক্তি এমন উত্তর নিয়ে আসতে পারে যা জিজ্ঞাসাকারীকে সন্তুষ্ট করতে পারে।
adviceযাইহোক , আমি স্টাফগুলিকে যথেষ্ট সমস্যাযুক্ত মনে করছি যে আমি এটির চেয়ে পরিষ্কার থাকব। আসলে, এই প্রশ্নের অনুপ্রেরণা একটি
interactiveঅনুমান সরবরাহ করা প্রয়োজন।