برنامه نویسی

از جاوا تا کاتلین، اولین برداشت در حلقه‌های for

چی؟ قرار بود این مثل جاوا باشه؟ من حتی نمی توانم یک حلقه for بنویسم؟!

یا حداقل این اولین برداشت من از کاتلین بود.
سعی کردم بنویسم for (int i = 0...) اما بعد به سرعت با آن سازگار شدم for (var i = 0...) و سپس for (var i = 0 : Int....) اما فهمید که من به هیچ جا نمی روم.

بعد از خراشیدن نوکم و گفتن چند تا نفرین کلمات خود دلگرم کننده من به جای آن حلقه for منظم افزایش یافته را انتخاب کردم. اما افسوس for (n : ints) همچنین منجر به یک خطای کامپایل شد.

پس بیایید به چیزی که من می گویم شیرجه بزنیم باید انجام داده اند.

سلب مسئولیت سریع این است که IntRange شی، و همچنین محدوده های دیگر در kotlin.ranges بسته ها آسان هستند و اغلب در حلقه ها استفاده می شوند. آنها را می توان به راحتی مانند نمونه های زیر ایجاد کرد:

val intRange = (1 .. 5)
val theEntireEnglishAlphabet = ('a' .. 'z')

// The ".." operator makes it an ascending range. 
// Another option, is to use the until or downTo keywords

val theSameAsIntRange = (1 until 5)
val descendingIntRange = (5 downTo 1)
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بنابراین، برگردیم به آنچه که این مقاله درباره آن است، چگونه از حلقه ها استفاده کنم؟

در اینجا چند نمونه آورده شده است!

// the regular, wonderful, enhanced for-loop

val someArr = intArrayOf(5, 3, 6, 32, 20, 1)

fun enhancedLoop() {
  for (num in someArr) {
    println(num) // -> console: 5, 3, 6, 32, 20, 1
  } 
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

آره! یک حلقه! 🙌 اما چگونه می توانم ایندکس ها را بدست بیاورم؟ 🤔
2 راه برای دستیابی به این آسانی وجود دارد. یکی با استفاده از .indicies خاصیت(؟) که در همه آرایه ها و مجموعه ها پیدا خواهید کرد که یک… حدس زدید! IntRange.


// using the .indicies 

val someArr = intArrayOf(5, 3, 6, 32, 20, 1)

fun loopWithIndex() {
  for (i in someArr.indicies) {
    println(i) // -> 0, 1, 2, 3, 4, 5
  }
}

// and if you're looking to loop until a certain value.
// you can just create a new range

// top level: private const val MAX_LOOPS = 5 

fun loopWithInlineRange() {
  for (i in 0 .. MAX_LOOPS) { // you can also use the "until" keyword for increased readability 
    println(i) // -> 0, 1, 2, 3, 4, 5
  }
}

// and if you'd like to do it descending, most likely just 
// a "backwards loop" 

val someOtherArr = intArrayOf(1, 2, 10, 4, 5)

fun loopDescendingWithRange(){
  for (i in someOtherArr.size -1 downTo 0){
    println(someOtherArr[i]) // -> 5, 4, 10 2, 1
  }
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

امیدوارم این مطالعه کوچک برای شما مفید بوده باشد. دلم برای خوبم تنگ شده بود for (int i = 0; i < whatHaveYou.length(); i++) در ابتدا، اما به سرعت به استفاده از محدوده ها علاقه مند شد.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا