Kotlin with Sunnat – Basics-1

আজ Kotlin এর এমন কিছু বেসিক শিখব, যা আমাদের ভবিষ্যতে যেকোন সময় কাজে আসবে।

সবার আগে আপনি IntelliJ IDEA Community Edition টি ডাউনলোড করে নিন। এটি ফ্রি এবং Kotlin করার জন্য যা দরকার, এখানে করতে পারবেন।

Hello World দয়েই শুরু করা যাক –

Input

fun main(args: Array<String>){
 val startKotlin:String = "Hello World"
 print(startKotlin) 
} 

Output

"C:\Program Files\Java\jdk1.8.0_131\bin\java" ...
Hello World
Process finished with exit code 0

আমরা এখন থেকে main() দেখে যা বুঝতে পারছি যে এটি কিছুটা Programming C এর মত। ফাংশন কে এখানে fun কি-ওয়ার্ড দিয়ে মেনশন করা হয়। Java এর মত Kotlin কে class বা package এ হতে হবে এমনটা নয়। variables আর parameters এর ফরমেট হচ্ছে name:type । এটি Swift বা Go এর মত ডানে variable type মেনশন করা হয়। আর Kotlin এর সবচেয়ে মজার বিষয় হচ্ছে Java এর মত সেমিকলন ‘;’ ব্যবহার করতে হয় না। 😀 

 

Variables (Read Only Vs. Variant Types)

Input

fun main(args: Array<String>){
    val readOnly: Int = 20
    var variantType: Int = 10

    println(readOnly)
    println(variantType)

    variantType = readOnly + 20
    println(variantType)

    readOnly = variantType + 20 // NOT ALLOWED!!!
}

 

Output

"C:\Program Files\Java\jdk1.8.0_131\bin\java ...
20
10
40
Process finished with exit code 0

উপরের উদাহরণে ২ টি initialize val readOnly: Int এবং var variantType: Int নেয়া হল। এখানে খেয়াল করলে দেখব যে val আর var নামের ২টি initialized আছে যেখানে val হচ্ছে শুধুমাত্র read করার জন্য, val দিয়ে আপনি যে ভ্যালু দিবেন সেটিই ফিক্সড, তা আর কোথাও পরিবর্তন করতে পারবেন না। আর var এ যা ভ্যালু দিবেন, তা যেকোন সময় পরিবর্তন করতে পারবেন।

 

Commenting

// This example is for commenting
/*
You can write whatever you want.
*/

এটি C++, Java ও অন্যান্য প্রোগ্রামিং ল্যাংগুয়েজ এর মত কমেন্টিং সাপোর্ট করে।

 

Numeric Types

এখানে Kotlin এ কিভাবে নাম্বার টাই initialize করবে, তার কিছু উদাহরণ দেওয়া হল।

fun main(args: Array<String>){
    var byte: Byte = 127 // Signed byte, -128 to 127
    var char: Char = 'A' // A 16bit Unicode character
    var short: Short = Short.MAX_VALUE //16bit signed MAX_VALUE == 32767
    var int: Int = 0xff // 32bit signed, Hex can be used with 0x prefix
    var long:Long = 0b11101101// 64bit signed, binary can be used with 0b prefix
    var float:Float = 3.14f // 32bit floating point number, floats designated with f postfix
    var double:Double = 3.1e10 // 64bit floating point, IEEE notation can be used too

    //double = float; // automatic down conversation is not allowed
    //float = double; // Nor is up conversion!

    double = float.toDouble() //Explicit conversion is allowed
    float = double.toFloat()

    byte = short.toByte() // allowed, but value too big so value is -1
    short = 42;
    byte = short.toByte() // value fits, new val would be 42
}

 

Functions

আমরা যদিও আগেই খেয়াল করিছি কিভাবে ফাংশন কল করতে হয়। Kotlin  এ fun কি-ওয়ার্ড ব্যবহার করা হয়। ফরমেটটি হচ্ছে – fun named(args): return type 

Input

fun function1(number: Int, title: String): String {
    return "$title $number"
}

fun main(args: Array<String>){
    print(function1(629, "My lucky number is "))
}

Output

"C:\Program Files\Java\jdk1.8.0_131\bin\java" ...
My lucky number is 629
Process finished with exit code 0

এখানে আমরা একটি String এবং একটি Int নেওয়া হয়েছে। Kotlin এ C এর মত একটি String এর ভিতর $ সিম্বল ব্যবহার করা হয়।

 

Nullable Types

ফাংশন null ভ্যালু রিটার্ন করে তবে এখানে ? অপারেটর দ্বারা মার্ক করে দিতে হবে।

Input

fun setName(name: String): String? {
    if (name == "Sunnat")
        return "Sunnat"
    else
        return null
}

fun main(args: Array<String>){
    var name = setName("Sunnat")
    if (name is String) {
        // in if block containing an is, no casting is required
        println(name)
    }
}

Output

"C:\Program Files\Java\jdk1.8.0_131\bin\java" ...
Sunnat

Process finished with exit code 0

আর যদি আপনি String? এর ? না মেনশন করেন তবে null আসলে এরকম error দেখাবে।

Output

Error:(5, 16) Kotlin: Null can not be a value of a non-null type String

 

Typecasts

আমরা একটু আগেই Numeric Types এ দেখেছি যে কিভাবে toXXX() মেথড দিয়ে টাইপ কনভার্ট করে। Kotlin এ এমন কনভার্ট করাতে safe এবং unsafe ২টি দিকই এ আছে। আমরা একটি unsafe কাস্ট দেখি। আমরা এখানে as অপারেটর ব্যবহার করব।

var i:Int = 42
println(i as String)

কি দেখতে পাচ্ছেন? :p   এটি main থ্রেডে একটি Exception

Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
 at TestOneKt.main(TestOne.kt:3)

এটি থেকে বাচার জন্য আমরা as? ব্যবহার করব।

var i:Int = 42
println(i as? String)

এর ফলে হয়ত casted value রেটার্ন করবে নাহলে exception throw করে null  দেখাবে।

 

আজ এ পর্যন্তই। আগামীকাল আমরা দেখব Conditionals and Flow ControlExtension Method এবং Classes 

Share on Facebook40Tweet about this on TwitterShare on Google+0Share on LinkedIn0Buffer this pageDigg thisEmail this to someoneFlattr the authorPin on Pinterest0Print this pageShare on Reddit0Share on StumbleUpon0Share on Tumblr0Share on VKShare on Yummly0

Comments

comments

Leave a Reply

Your email address will not be published.