Public এবং Private Functions in Elixir
Elixir তে ফাংশন ডিফাইন করার সময় আপনি তা public বা private হিসেবে চিহ্নিত করতে পারেন। এই ধারণা মূলত মডিউল বা কোডের অন্তর্নিহিত ফাংশনালিটির অ্যাক্সেস নিয়ন্ত্রণ করতে ব্যবহৃত হয়। Elixir এর public এবং private ফাংশনগুলি কোডের সংগঠন এবং নিরাপত্তা বজায় রাখে, এবং এটি ব্যবহারকারীকে স্পষ্টভাবে নির্ধারণ করতে সাহায্য করে কোন ফাংশন বাইরের কোড থেকে অ্যাক্সেস করা যাবে এবং কোন ফাংশন শুধুমাত্র মডিউলের ভেতরকার ব্যবহারকারীদের জন্য সীমাবদ্ধ থাকবে।
Public Functions
Elixir তে public ফাংশনগুলি মডিউলের বাইরে থেকেও অ্যাক্সেস করা যেতে পারে। সাধারণত, মডিউলের বাইরে কোনো কোড বা অ্যাপ্লিকেশন যখন মডিউলটির ফাংশন ব্যবহার করতে চায়, তখন এই ধরনের ফাংশন ব্যবহৃত হয়। def কিওয়ার্ড দিয়ে ডিফাইন করা ফাংশন স্বাভাবিকভাবে public হয়।
বৈশিষ্ট্য:
- Public functions মডিউল থেকে বাইরের কোড দ্বারা অ্যাক্সেসযোগ্য হয়।
- মডিউলের API হিসেবে ব্যবহার হয়।
- সাধারণত বাইরের ব্যবহারের জন্য নির্ধারিত।
ব্যবহার:
defmodule MyModule do
def greet(name) do
IO.puts("Hello, #{name}!")
end
endএখানে, greet/1 ফাংশনটি public, এবং এটি মডিউলের বাইরের কোড দ্বারা অ্যাক্সেস করা যাবে।
ফাংশন কল:
MyModule.greet("Alice") # Output: Hello, Alice!এটি মডিউলটির বাইরের কোড থেকে কল করা যাবে, কারণ এটি public।
Private Functions
Elixir তে private ফাংশনগুলি শুধুমাত্র মডিউলের অভ্যন্তরে ব্যবহৃত হতে পারে। এগুলি বাইরের কোড থেকে অ্যাক্সেস করা যায় না, এবং এটি সাধারণত মডিউলের ইন্টারনাল লজিক বা গোপনীয় কোড বাস্তবায়নের জন্য ব্যবহৃত হয়। defp কিওয়ার্ড দিয়ে private ফাংশন ডিফাইন করা হয়।
বৈশিষ্ট্য:
- Private functions শুধুমাত্র মডিউলের ভেতরেই ব্যবহার করা যেতে পারে।
- বাইরের কোড থেকে অ্যাক্সেস করা সম্ভব নয়।
- সাধারণত, অভ্যন্তরীণ ফাংশন বা হেল্পার ফাংশন হিসেবে ব্যবহৃত হয়।
ব্যবহার:
defmodule MyModule do
def greet(name) do
IO.puts("Hello, #{name}!")
format_name(name)
end
defp format_name(name) do
String.capitalize(name)
end
endএখানে, format_name/1 ফাংশনটি private এবং এটি শুধু greet/1 ফাংশনের ভিতরে ব্যবহৃত হতে পারে।
ফাংশন কল:
MyModule.greet("alice") # Output: Hello, alice!
# Output: Aliceযেহেতু format_name/1 ফাংশনটি private, আপনি এটি greet/1 এর বাইরে কল করতে পারবেন না।
MyModule.format_name("bob") # Error: undefined function format_name/1এটি একটি ত্রুটি (error) দেবে, কারণ format_name/1 ফাংশনটি private এবং বাইরের কোড থেকে অ্যাক্সেসযোগ্য নয়।
Public এবং Private Functions এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Public Functions | Private Functions |
|---|---|---|
| অ্যাক্সেস | মডিউলের বাইরে থেকেও অ্যাক্সেস করা যায়। | শুধুমাত্র মডিউলের ভিতরে অ্যাক্সেসযোগ্য। |
| ব্যবহার | বাইরের কোড বা মডিউল দ্বারা ব্যবহৃত হয়। | মডিউলের অভ্যন্তরীণ লজিকের জন্য ব্যবহৃত হয়। |
| কিওয়ার্ড | def কিওয়ার্ড দিয়ে ডিফাইন করা হয়। | defp কিওয়ার্ড দিয়ে ডিফাইন করা হয়। |
| ফাংশন অ্যাক্সেস | মডিউলের বাইরে থেকেও সরাসরি অ্যাক্সেস করা যায়। | মডিউলের বাইরের কোড থেকে অ্যাক্সেস করা যায় না। |
সারসংক্ষেপ
- Public Functions হল এমন ফাংশন যা বাইরের কোড থেকে অ্যাক্সেস করা যায় এবং সাধারণত মডিউলের API হিসেবে ব্যবহৃত হয়।
- Private Functions হল এমন ফাংশন যা শুধুমাত্র মডিউলের ভিতরেই ব্যবহৃত হতে পারে, এবং বাইরের কোডের জন্য অনুপলব্ধ থাকে।
Elixir তে public এবং private ফাংশন ব্যবহারের মাধ্যমে আপনি আপনার কোডের গোপনীয়তা এবং নিরাপত্তা বজায় রাখতে পারেন, এবং মডিউলের অভ্যন্তরীণ এবং বাইরের লজিক পৃথক করতে পারেন।
Read more