স্কালা একটি স্ট্যাটিক্যালি টাইপড ভাষা, যার মানে হল যে প্রোগ্রামের কম্পাইলের সময় প্রতিটি ভ্যারিয়েবলের টাইপ নির্ধারণ করা হয়। তবে স্কালার টাইপ সিস্টেমে টাইপ ইনফারেন্স রয়েছে, যা কোড লেখার সময় টাইপগুলো স্বয়ংক্রিয়ভাবে অনুমান করে, ফলে আপনি টাইপ নির্ধারণ করতে অনেক সময় কম প্রয়োজন হয়।
স্কালায় ভ্যারিয়েবল এবং ডেটা টাইপের ব্যবহার সম্পর্কে বিস্তারিত জানুন।
১. ভ্যারিয়েবল (Variables)
স্কালায় দুই ধরনের ভ্যারিয়েবল ডিফাইন করা হয়:
val: Immutable (অপরিবর্তনীয়) ভ্যারিয়েবল।var: Mutable (পরিবর্তনযোগ্য) ভ্যারিয়েবল।
১.১ val - Immutable ভ্যারিয়েবল
val দিয়ে ডিফাইন করা ভ্যারিয়েবল একটি নির্দিষ্ট মান অ্যাসাইন করার পর সেটি আর পরিবর্তন করা যায় না।
উদাহরণ:
val x: Int = 10 // Immutable variable
println(x) // Output: 10
// Trying to reassign 'x' will result in a compile-time error
// x = 20 // Error: reassignment to val১.২ var - Mutable ভ্যারিয়েবল
var দিয়ে ডিফাইন করা ভ্যারিয়েবল পরিবর্তনযোগ্য। আপনি একাধিক বার এর মান পরিবর্তন করতে পারেন।
উদাহরণ:
var y: Int = 20 // Mutable variable
println(y) // Output: 20
y = 30 // Reassigning value to 'y'
println(y) // Output: 30২. ডেটা টাইপ (Data Types)
স্কালায় সাধারণত ব্যবহৃত ডেটা টাইপগুলির মধ্যে রয়েছে:
- প্রাথমিক ডেটা টাইপ (Primitive Data Types):
Int: পূর্ণসংখ্যা (Integer)Double: দশমিক সংখ্যা (Floating-point number)Boolean: সত্য/মিথ্যা মান (True/False)Char: একটি একক অক্ষরString: টেক্সট বা অক্ষরের সিকোয়েন্সUnit: কোনো মান ফেরত না দেওয়ার জন্য (যেমন void in other languages)Null: কোন অবজেক্ট নেই এমন মানNothing: সমস্ত ধরনের ত্রুটি বা ব্যতিক্রমের ক্ষেত্রে ব্যবহৃত
২.১ Int - পূর্ণসংখ্যা
Int টাইপের মান পূর্ণসংখ্যা হিসেবে ব্যবহৃত হয়।
উদাহরণ:
val num1: Int = 100
println(num1) // Output: 100২.২ Double - দশমিক সংখ্যা
Double টাইপের মান দশমিক সংখ্যা (ফ্লোটিং পয়েন্ট) হিসেবে ব্যবহৃত হয়।
উদাহরণ:
val num2: Double = 20.5
println(num2) // Output: 20.5২.৩ Boolean - বুলিয়ান
Boolean টাইপের মান true বা false হতে পারে।
উদাহরণ:
val flag: Boolean = true
println(flag) // Output: true২.৪ Char - অক্ষর
Char টাইপে একটি একক অক্ষর রাখা হয়। এটি সাধারণত একক উল্লিখিত (‘ ’) চিহ্নে লেখা হয়।
উদাহরণ:
val letter: Char = 'A'
println(letter) // Output: A২.৫ String - স্ট্রিং
String টাইপটি একাধিক অক্ষরের সিকোয়েন্স ধারণ করে। এটি সাধারণত " " চিহ্নের মধ্যে লেখা হয়।
উদাহরণ:
val name: String = "Scala"
println(name) // Output: Scala২.৬ Unit - কোন মান ফেরত না দেওয়া
Unit টাইপটি ফাংশন বা মেথডের জন্য ব্যবহৃত হয়, যা কোনো মান ফেরত দেয় না, বা কার্যকলাপের শেষ হতে পারে (যেমন void in Java, None in Python)।
উদাহরণ:
def greet(): Unit = {
println("Hello, Scala!")
}
greet() // Output: Hello, Scala!২.৭ Null - নাল
Null টাইপ একটি অবজেক্ট নেই এমন মানের প্রতিনিধিত্ব করে। এটি সাধারণত রেফারেন্স টাইপের জন্য ব্যবহৃত হয়।
উদাহরণ:
val name: String = null // This will cause an error as String is a non-nullable type২.৮ Nothing - কোন ফলাফল নেই
Nothing একটি বিশেষ ডেটা টাইপ, যা কোনো প্রকার ফলাফল বা মান ফেরত দেয় না এবং এটি সাধারণত ব্যতিক্রম ঘটানোর ক্ষেত্রে ব্যবহৃত হয়।
উদাহরণ:
def throwError(): Nothing = {
throw new RuntimeException("Something went wrong!")
}৩. টাইপ ইনফারেন্স (Type Inference)
স্কালা একটি টাইপ ইনফারেন্স সিস্টেম ব্যবহার করে, যার মানে আপনি ভ্যারিয়েবল ডিফাইন করার সময় টাইপ উল্লেখ না করলেও স্কালা তা স্বয়ংক্রিয়ভাবে অনুমান করতে পারে।
উদাহরণ:
val num = 100 // Scala infers that num is of type Int
val message = "Hello, Scala!" // Scala infers that message is of type Stringএখানে টাইপ Int এবং String স্বয়ংক্রিয়ভাবে অনুমান করা হয়েছে, এবং আপনাকে টাইপ উল্লেখ করার দরকার নেই।
৪. টাইপ কাস্টিং (Type Casting)
স্কালায় টাইপ কাস্টিং করা সম্ভব। কিছু ক্ষেত্রে, আপনাকে এক টাইপের মান অন্য টাইপে রূপান্তর (cast) করতে হতে পারে।
উদাহরণ:
val doubleValue: Double = 5.6
val intValue: Int = doubleValue.toInt // Converting Double to Int (Truncates the decimal part)
println(intValue) // Output: 5সারাংশ
স্কালায় ভ্যারিয়েবল ডিফাইন করার জন্য val এবং var ব্যবহৃত হয়, যেখানে val ইমিউটেবল এবং var মিউটেবল ভ্যারিয়েবল হিসেবে কাজ করে। স্কালায় বিভিন্ন ধরনের ডেটা টাইপ রয়েছে যেমন Int, Double, Boolean, String, Char, Unit, Null এবং Nothing। টাইপ ইনফারেন্সের কারণে কোড লেখার সময় টাইপগুলো স্বয়ংক্রিয়ভাবে নির্ধারণ হয়ে থাকে, যা স্কালাকে আরো সহজ এবং সংক্ষিপ্ত করে তোলে।
Read more