কোনও এম-ফাইলের প্রথম ফাংশন (অর্থাত্ মূল ফাংশন ), যখন সেই এম-ফাইলটি কল করা হয়। মূল ফাংশনের এম-ফাইলের মতো একই নাম থাকা প্রয়োজন নয় , তবে স্পষ্টতার জন্য এটি হওয়া উচিত । যখন ফাংশন এবং ফাইলের নাম পৃথক হয়, তখন ফাইলের নামটি মূল ফাংশনটি কল করতে অবশ্যই ব্যবহার করা উচিত।
এম-ফাইলে পরবর্তী সমস্ত ফাংশন, স্থানীয় ফাংশন (বা "পুরানো পরিভাষায়" সাবফিউশনস) বলা হয়, কেবল সেই এম-ফাইলের মূল ফাংশন এবং অন্যান্য স্থানীয় ফাংশন দ্বারা কল করা যেতে পারে। অন্যান্য এম-ফাইলে ফাংশনগুলি তাদের কল করতে পারে না। আর -2016 বি থেকে শুরু করে, আপনি স্ক্রিপ্টগুলিতে স্থানীয় ফাংশনগুলিও যুক্ত করতে পারেন , যদিও স্কোপিং আচরণটি একই রকম (যেমন এগুলি কেবল স্ক্রিপ্টের মধ্যে থেকে কল করা যেতে পারে)।
এছাড়াও, আপনি অন্যান্য ফাংশনগুলির মধ্যে ফাংশনও ঘোষণা করতে পারেন । এগুলিকে নেস্টেড ফাংশন বলা হয় এবং এগুলি কেবল নেস্ট করা ফাংশন থেকেই কল করা যায়। তারা যে কাজগুলিতে বাসা বাঁধে সেগুলিতেও ভেরিয়েবলের অ্যাক্সেস থাকতে পারে, যা তাদের সাথে কাজ করার জন্য কিছুটা জটিল হলেও বেশ কার্যকর করে তোলে।
চিন্তার জন্য আরও খাবার ...
উপরে উল্লিখিত সাধারণ ফাংশন স্কোপিং আচরণের কিছু উপায় রয়েছে যেমন এসসিফ্রঞ্চ এবং জোনাসের উত্তরগুলিতে আউটপুট আর্গুমেন্ট হিসাবে ফাংশন হ্যান্ডলগুলি পাস করা (যা R2013b থেকে শুরু করে, ফাংশনটি দ্বারা সহজতর হয় )। তবে, আমি এটিকে এ জাতীয় কৌশলগুলি অবলম্বন করার অভ্যাস করার পরামর্শ দেব না, কারণ আপনার ফাংশন এবং ফাইলগুলি সংগঠিত করার জন্য সম্ভবত আরও ভাল বিকল্প রয়েছে।localfunctions
উদাহরণস্বরূপ, ধরুন, আপনি একটি প্রধান ফাংশন আছে যাক A
একটি M-ফাইলের মধ্যে A.m
, স্থানীয় ফাংশন সঙ্গে বরাবর D
, E
এবং F
। এখন ধরুন আপনি দুই অন্যান্য সম্পর্কিত ফাংশন দাও B
এবং C
M-ফাইলের মধ্যে B.m
এবং C.m
যথাক্রমে, তোমরাও তেমনি কল করতে পারবেন হতে চান D
, E
এবং F
। আপনার কাছে কয়েকটি বিকল্প এখানে রয়েছে:
রাখুন D
, E
এবং F
প্রতিটি তাদের নিজস্ব পৃথক এম-ফাইলগুলিতে রাখুন , অন্য কোনও ফাংশন তাদের কল করার অনুমতি দেয়। Downside হয় যে এই ফাংশন পরিধি বড় এবং মাত্র অবধি সীমিত নয় A
, B
এবং C
, কিন্তু গোলমালে যে এই বেশ সহজ হয়।
একটি তৈরি করুন defineMyFunctions
সঙ্গে (জোনাস 'উদাহরণে মত) M-ফাইল D
, E
এবং F
স্থানীয় কার্যকারিতা ও একটি প্রধান ফাংশন হিসাবে যে কেবল আয় তাদের হ্যান্ডলগুলি কাজ করে। এই আপনি রাখার অনুমতি দেয় D
, E
এবং, F
একই ফাইলের মধ্যে, কিন্তু এটা কোন ফাংশন যা কল করতে পারেন যেহেতু এই ফাংশন পরিধি সংক্রান্ত কিছু না defineMyFunctions
তাদের ডাকা পারবেন না। তারপরে আপনার নিজের যেখানে প্রয়োজন সেখানে আপনার রয়েছে তা নিশ্চিত করার জন্য আপনাকে চার্জটি হস্তান্তর করার বিষয়ে চারপাশে তর্ক করতে হবে।
কপি D
, E
এবং F
মধ্যে B.m
এবং C.m
স্থানীয় ফাংশন হিসাবে। এটি তাদের ব্যবহারের সুযোগ কেবল A
, B
এবং C
, এ সীমাবদ্ধ করে তবে আপনার কোডটির আপডেটিং এবং রক্ষণাবেক্ষণকে একটি দুঃস্বপ্ন করে তোলে কারণ আপনার কাছে একই জায়গায় তিনটি অনুলিপি একই জায়গায় রয়েছে।
ব্যক্তিগত ফাংশন ব্যবহার করুন ! আপনি যদি A
, B
এবং C
একই ডিরেক্টরির মধ্যে, আপনি একটি সাব নামক তৈরি করতে পারেন private
এবং স্থান D
, E
এবং F
সেখানে একটি পৃথক M-ফাইল হিসাবে প্রতিটি। এটি তাদের সুযোগ সীমিত তাই তারা শুধুমাত্র অবিলম্বে উপরে ডিরেক্টরির মধ্যে ফাংশন দ্বারা বলা যেতে পারে (অর্থাত A
, B
এবং C
) এবং তাদের একই স্থানে একসঙ্গে রাখে (কিন্তু এখনও বিভিন্ন M-ফাইল):
myDirectory/
A.m
B.m
C.m
private/
D.m
E.m
F.m
এটি আপনার প্রশ্নের ক্ষেত্রের বাইরে কিছুটা বাইরে চলে গেছে এবং সম্ভবত আপনার প্রয়োজনের তুলনায় এটি আরও বিশদ, তবে আমি ভেবেছিলাম আপনার সমস্ত এম-ফাইলগুলি সংগঠিত করার আরও সাধারণ উদ্বেগের দিকে স্পর্শ করা ভাল। ;)
^
, @idigas