محدوده متغیر

متغیرها در کاتلین، دارای محدوده هستند. محدوده یا scope یک متغیر، به شما می‌گوید که در کجای برنامه می‌توان از متغیر استفاده کرد و یا متغیر قابل دسترسی است. به عنوان مثال، متغیری که در داخل یک تابع تعریف می‌شود، فقط در داخل بدنه تابع قابل دسترسی است. می‌توان دو متغیر با نام یکسان در دو تابع مختلف تعریف کرد. برنامه زیر این ادعا را اثبات می‌کند :

  1: fun demonstrateScope()
  2: {
  3:     val number = 5
  4: 
  5:     println("number inside method demonstrateScope() = $number")
  6: }
  7: 
  8: fun main(args: Array<String>)
  9: {
 10:     val number = 10
 11: 
 12:     demonstrateScope()
 13: 
 14:     println("number inside the main method() = $number")
 15: }
number inside method DemonstrateScope() = 5
number inside the Main method() = 10

مشاهده می‌کنید که، حتی اگر ما دو متغیر با نام یکسان تعریف کنیم که، دارای محدوده‌های متفاوتی باشند، می‌توان به هر کدام از آنها مقادیر مختلفی اختصاص داد. متغیر تعریف شده در داخل تابع main() در خط 10 هیچ ارتباطی به متغیر داخل تابع demonstrateScope() در خط 3 ندارد. وقتی به مبحث کلاسها رسیدیم در این باره بیشتر توضیح خواهیم داد.