টিসিএল (Tcl) - গ্লোবাল এবং লোকাল ভেরিয়েবলস
টিসিএল (Tcl) ভাষায় গ্লোবাল এবং লোকাল ভেরিয়েবলস ব্যবহারের কনসেপ্ট খুবই গুরুত্বপূর্ণ, বিশেষত যখন ফাংশন এবং স্ক্রিপ্টের মধ্যে ডেটা শেয়ার করা বা তাদের অ্যাক্সেস করতে হয়। টিসিএল এ ভেরিয়েবলগুলি ডিফল্টভাবে গ্লোবাল হয়, কিন্তু আপনি চাইলে একটি ভেরিয়েবলকে লোকাল করতে পারেন, যাতে সেটি শুধুমাত্র ফাংশনের মধ্যে উপলব্ধ থাকে। এখানে গ্লোবাল এবং লোকাল ভেরিয়েবলস সম্পর্কে বিস্তারিত আলোচনা করা হলো।
১. গ্লোবাল ভেরিয়েবলস (Global Variables)
গ্লোবাল ভেরিয়েবলস এমন ভেরিয়েবল যা স্ক্রিপ্টের যেকোনো স্থানে অ্যাক্সেস করা যেতে পারে, মানে এগুলি ফাংশনগুলির বাইরের স্কোপে ডিফাইন করা হয়। গ্লোবাল ভেরিয়েবলগুলি একবার ডিক্লেয়ার হওয়ার পর, স্ক্রিপ্টের পুরো অংশে ব্যবহার করা যায়।
গ্লোবাল ভেরিয়েবল ডিক্লারেশন:
set globalVar "This is a global variable"এখানে, globalVar একটি গ্লোবাল ভেরিয়েবল এবং এটি স্ক্রিপ্টের যেকোনো স্থানে অ্যাক্সেসযোগ্য।
গ্লোবাল ভেরিয়েবল ব্যবহার:
puts $globalVar ;# আউটপুট: This is a global variableএখানে, puts কমান্ডের মাধ্যমে globalVar ভেরিয়েবলের মান আউটপুট করা হয়েছে।
গ্লোবাল ভেরিয়েবল একটি ফাংশনে ব্যবহার:
ফাংশনের মধ্যে গ্লোবাল ভেরিয়েবল অ্যাক্সেস করার জন্য global কিওয়ার্ড ব্যবহার করা হয়।
set globalVar "This is a global variable"
proc showGlobalVar {} {
global globalVar
puts $globalVar
}
showGlobalVar ;# আউটপুট: This is a global variableএখানে, globalVar ভেরিয়েবলটি গ্লোবাল স্কোপে ডিফাইন করা হয়েছে এবং showGlobalVar ফাংশনে global কিওয়ার্ড ব্যবহার করে এটি অ্যাক্সেস করা হয়েছে।
২. লোকাল ভেরিয়েবলস (Local Variables)
লোকাল ভেরিয়েবলস শুধুমাত্র সেই ফাংশনের মধ্যে অ্যাক্সেসযোগ্য যেখানে সেগুলি ডিফাইন করা হয়েছে। অন্য কোনো ফাংশন বা স্ক্রিপ্টের অংশে এই ভেরিয়েবলগুলি অ্যাক্সেস করা যায় না।
লোকাল ভেরিয়েবল ডিক্লারেশন:
proc myFunction {} {
set localVar "This is a local variable"
puts $localVar
}এখানে, localVar একটি লোকাল ভেরিয়েবল যা myFunction ফাংশনের মধ্যে ডিফাইন করা হয়েছে এবং শুধুমাত্র এই ফাংশনের মধ্যে অ্যাক্সেসযোগ্য।
লোকাল ভেরিয়েবল ব্যবহার:
myFunction ;# আউটপুট: This is a local variableএখানে, myFunction ফাংশনে localVar ভেরিয়েবলের মান প্রিন্ট করা হয়েছে। তবে, যদি আপনি myFunction এর বাইরে $localVar ব্যবহার করতে চান, তবে তা কাজ করবে না কারণ এটি একটি লোকাল ভেরিয়েবল।
৩. গ্লোবাল এবং লোকাল ভেরিয়েবলসের মধ্যে পার্থক্য
| বিষয় | গ্লোবাল ভেরিয়েবল | লোকাল ভেরিয়েবল |
|---|---|---|
| স্কোপ | স্ক্রিপ্টের যেকোনো স্থানে অ্যাক্সেসযোগ্য | শুধুমাত্র সেই ফাংশনের মধ্যে অ্যাক্সেসযোগ্য |
| ডিক্লারেশন | set variableName value | set variableName value (ফাংশনের ভিতরে) |
| ব্যবহার | স্ক্রিপ্টের যেকোনো অংশে ব্যবহার করা যায় | শুধুমাত্র ফাংশনের মধ্যে ব্যবহার করা যায় |
| সংশোধন | অন্য যে কোনো ফাংশন বা স্ক্রিপ্ট দ্বারা পরিবর্তনযোগ্য | শুধুমাত্র ফাংশনের মধ্যে পরিবর্তনযোগ্য |
৪. গ্লোবাল ভেরিয়েবলকে লোকাল করতে global কিওয়ার্ড ব্যবহার
একটি গ্লোবাল ভেরিয়েবলকে ফাংশনের মধ্যে ব্যবহার করতে হলে, global কিওয়ার্ড ব্যবহার করতে হয়। এর মাধ্যমে ফাংশনটি জানে যে এটি গ্লোবাল স্কোপ থেকে ভেরিয়েবলটি অ্যাক্সেস করবে।
উদাহরণ:
set counter 0
proc incrementCounter {} {
global counter
incr counter
}
incrementCounter
puts $counter ;# আউটপুট: 1এখানে, counter একটি গ্লোবাল ভেরিয়েবল যা ফাংশনের মধ্যে global কিওয়ার্ড দিয়ে ব্যবহার করা হয়েছে।
৫. লোকাল ভেরিয়েবলকে গ্লোবাল করতে global কিওয়ার্ড ব্যবহার
যদি আপনি কোনো ভেরিয়েবলকে ফাংশনের বাইরের স্কোপে গ্লোবাল করতে চান, তবে global কিওয়ার্ড ব্যবহার করতে হবে।
উদাহরণ:
proc myFunction {} {
global counter
set counter 100
}
myFunction
puts $counter ;# আউটপুট: 100এখানে, counter নামের ভেরিয়েবলটি ফাংশনের মধ্যে global কিওয়ার্ড দিয়ে গ্লোবাল করা হয়েছে এবং তার মান পরিবর্তন করা হয়েছে।
উপসংহার
গ্লোবাল ভেরিয়েবলস এবং লোকাল ভেরিয়েবলস ব্যবহারের মধ্যে একটি প্রধান পার্থক্য হল স্কোপ। গ্লোবাল ভেরিয়েবলস স্ক্রিপ্টের যেকোনো স্থানে অ্যাক্সেস করা যায়, তবে লোকাল ভেরিয়েবলস শুধুমাত্র সেই ফাংশনের মধ্যে অ্যাক্সেসযোগ্য থাকে যেখানে সেগুলি ডিফাইন করা হয়েছে। ফাংশনের মধ্যে গ্লোবাল ভেরিয়েবল ব্যবহার করতে global কিওয়ার্ড এবং লোকাল ভেরিয়েবল ব্যবহার করতে set কমান্ড ব্যবহার করা হয়।
Read more