Sobes.tech
Junior

როგორ აღწერენ Kotlin- ში ფუნქციებს?

sobes.tech AI

პასუხი AI-სგან

ფუნქციები გამოაცხადება fun საკვანძო სიტყვით, რომლის შემდეგ მოდის ფუნქციის სახელი, პარამეტრების სია გრგვინკულა ღილაკებში (სურვილისამებრ), ორლინიანი ნიშანი და დაბრუნების ტიპი (სურვილისამებრ). ფუნქციის სხეული შედის ფიგურული ბრაკეტებით. თუ დაბრუნების ტიპი გამოტოვებულია, ფუნქცია აბრუნებს Unit-ს (სხვადასხვა ენებში void-ის ექვივალენტი).

// პარამეტრებით და დაბრუნების მნიშვნელობით ფუნქცია
fun greet() {
    println("Hello!")
}

// პარამეტრებით ფუნქცია
fun add(x: Int, y: Int): Int {
    return x + y
}

// ერთ გამოთქმაზე დაფუძნებული ფუნქცია (შოკირებული სხეულის სინტაქსი)
fun multiply(a: Int, b: Int) = a * b

ფუნქციის პარამეტრები გამოაცხადება სახელი:ტიპი ფორმატში. შესაძლებელია დეფოლტ მნიშვნელობების მითითება:

fun sendMessage(message: String, sender: String = "Unknown") {
    println("$sender: $message")
}

ფუნქციები შეიძლება გამოაცხადოს ფაილის ზედა დონეზე ან კლასების, ობიექტების ან ინტერფეისების წევრებად:

  • Top-level functions: გამოაცხადება კლასების გარეთ:

    fun calculateArea(radius: Double): Double {
        return Math.PI * radius * radius
    }
    
  • Member functions: გამოაცხადება კლასების შიგნით:

    class MyClass {
        fun doSomething() {
            println("Doing something.")
        }
    }
    
  • Extension functions: საშუალებას აძლევს "დაამატოს" ფუნქციები არსებულ კლასებს მათი თავდაპირველი კოდის შეცვლის გარეშე:

    fun String.reverseAndUpperCase(): String {
        return this.reversed().toUpperCase()
    }
    

ლამბდა გამოხატულებები და ანონიმური ფუნქციები წარმოადგენს ფუნქციონალურ ლიტერატურებს, რომლებიც შეიძლება გადაეცეს როგორც არგუმენტები ან მიენიჭოს ცვლადებს:

val sum: (Int, Int) -> Int = { x, y -> x + y }
val greeting = { name: String -> "Hello, $name!" }

ზედა დონის ფუნქციები იღებენ ფუნქციებს როგორც პარამეტრებს ან აბრუნებენ ფუნქციებს:

fun operate(a: Int, b: Int, operation: (Int, Int) -> Int): Int {
    return operation(a, b)
}

val result = operate(5, 3, { x, y -> x * y }) // შედეგი = 15

ფუნქციების გადატვირთვა (ერთი სახელის მქონე სხვადასხვა სიგნატურით) ავტომატურად მხარდაჭერილია:

fun printInfo(name: String) {
    println("Name: $name")
}

fun printInfo(age: Int) {
    println("Age: $age")
}