2 سال پیش / خواندن دقیقه

اموزش فراخوانی تابع به شیوه میانوندی درکاتلین به زبان ساده

در این بخش از مقاله آموزش کاتلین به بررسی شیوه استفاده از نمادگذاری میانوندی برای فراخوانی تابع‌ها خواهیم پرداخت و مثال‌هایی را در این خصوص مورد بررسی قرار می‌دهیم. پیش از آن که در مورد شیوه ایجاد یک تابع با نمادگذاری میانوندی توضیح دهیم، به بررسی دو تابع رایج با این طرز نشانه‌گذاری می‌پردازیم.

زمانی که از عملگرهای || و && استفاده می‌کنیم، کامپایلر به ترتیب به دنبال تابع‌های or و and می‌گردد و آن‌ها را در پس‌زمینه فراخوانی می‌کند. این دو تابع از نمادگذاری میانوندی پشتیبانی می‌کنند.

مثالی از تابع or و and در کاتلین

fun main(args: Array<String>) {    val a = true    val b = false    var result: Boolean     result = a or b // a.or(b)    println("result = $result")
    result = a and b // a.and(b)    println("result = $result")
}


خروجی برنامه فوق به صورت زیر است:

result = true 
result = false

در برنامه فوق، از عبارت a or b به جای a.or(b) و از عبارت a and b به جای a.and(b) استفاده شده است. دلیل این که امکان چنین کاری وجود دارد، این است که این دو تابع از نمادگذاری میانوندی پشتیبانی می‌کنند.

شیوه ایجاد تابعی با نمادگذاری میانوندی در کاتلین چگونه است؟

در صورتی که تابعی همه شرایط زیر را داشته باشد، می‌توانیم آن را با استفاده از نمادگذاری میانوندی فراخوانی کنیم:

  • ابن تابع یک تابع عضو (یا تابع بسط) باشد.
  • این تابع تنها یک پارامتر داشته باشد.
  • این تابع با کلیدواژه infix نشانه‌گذاری شده باشد.

مثالی از تابع تعریف ‌شده‌ کاربر با نمادگذاری میانوندی

class Structure() {
    infix fun createPyramid(rows: Int) {        var k = 0        for (i in 1..rows) {            k = 0            for (space in 1..rows-i) {                print("  ")            }            while (k != 2*i-1) {                print("* ")                ++k            }            println()        }    }
}
 fun main(args: Array<String>) {    val p = Structure()    p createPyramid 4       // p.createPyramid(4)
}


خروجی برنامه فوق به صورت زیر است:

      *    * * *  * * * * * * * * * * * *

در برنامه فوق، ()createPyramid یک تابع میانوندی است که یک ساختار هرمی ایجاد می‌کند. این تابع یک تابع عضو کلاس Structure است که تنها یک پارامتر از نوع Int می‌گیرد و با کلیدواژه infix آغاز می‌شود.

تعداد ردیف‌های هرم به آرگومان‌های ارسالی به تابع بستگی دارد.


شاید از نوشته‌های زیر خوشتان بیاید
نظر خود را درباره این پست بنویسید ...

منوی سریع