گرفتن ورودی از کاربر

Swift از تابع ()readLine برای گرفتن ورودی از کاربر استفاده می‌کند. این تابع، تمام کاراکترهایی را که شما در محیط کنسول تایپ می‌کنید تا زمانی که دکمه Enter را می‌زنید، می‌خواند. به برنامه زیر توجه کنید :

 1: print("Enter your name: ", terminator:"")
 2: var name = readLine()
 3: 
 4: print("Enter your age: ", terminator:"")
 5: var age = readLine()
 6: 
 7: print("Enter your height: ", terminator:"")
 8: var height = readLine()
 9: 
10: //Print a blank line
11: print();
12: 
13: //Show the details you typed
14: print("Name is \(name!)")
15: print("Age is \(age!)")
16: print("Height is \(height!)")

با اجرای برنامه، نشان گر ماوس نمایش داده می‌شود و برنامه از شما می‌خواهد که اطلاعات را وارد کنید. برنامه از شما نام، سن و قدتان را می‌خواهد و شما باید بعد از وارد کردن اطلاعات هر بخش، دکمه Enter را بزنید. با زدن دکمه Enter آخر، خروجی به صورت زیر نمایش داده می‌شود:

Enter your name: John
Enter your age: 18
Enter your height: 160.5

Name is John
Age is 18
Height is 160.5

همانطور که در خطوط 14، 15 و 16 کد بالا مشاهده می‌کنید، ما در جلوی نام هر متغیر یک علامت ! گذاشته‌ایم. دلیل این کار این است که تابع ()readLine یک رشته اختیاری را بر می‌گرداند، در نتیجه شما برای باز کردن و نشان دادن مقدار این رشته باشد آن را unwrap یا باز کنید و این کار هم با استفاده از علامت ! ممکن است. در همین حد کافیست که بدانید که تابع ()readLine ورودی را از کاربر گرفته و آنها را به صورت رشته در متغیرهای age ،name و height (خطوط 2، 5 و 8) قرار می‌دهد. قبول دارید که سن و قد باید از نوع عددی باشند؟ اگر بخواهید فقط در محیط کنسول مقادیری را نمایش دهید که عددی یا غیر عددی بود مشکلی به وجود نمی‌آورد. مانند مثال بالا، که ما فقط از کاربر اطلاعاتی را گرفته و چاپ کرده‌ایم. ولی اگر بخواهیم دو عدد را با هم جمع کنیم، باید چکار کنیم. به کد زیر توجه کنید :

print("Enter Number1: ", terminator:"")
var number1 = readLine()

print("Enter Number2: ", terminator:"")
var number2 = readLine()

print()

print("Sum is : " , (number1! + number2!))

کد بالا را اجرا کرده و دو عدد را وارد نمایید:

Enter Number1: 10
Enter Number2: 5

Sum is :  105

همانطور که مشاهده می‌کنید بعد از وارد کردن اعداد 10 و 5 خروجی عدد 105 می‌شود. البته در اصل عدد 105 نیست، بلکه برنامه دو عدد را مانند دو رشته در نظر می‌گیرد و آنها را به هم می‌چسباند. اگر بخواهیم این دو عدد را واقعاً با هم جمع کنیم و عدد 15 را به دست بیاوریم باید بعد از تابع ()readLine از توابع تبدیل داده که در درس‌های قبل ذکر کردیم به صورت زیر استفاده نمایید:

print("Enter Number1: ", terminator:"")
let number1 = Int(readLine()!)

print("Enter Number2: ", terminator:"")
let number2 = Int(readLine()!)

print()

print("Sum is : ", (number1! + number2!) )

به خروجی کد بالا توجه کنید:

Enter Number1: 10
Enter Number2: 5

Sum is : 15

همانطور که گفتیم، تابع ()readLine رشته دریافت می‌کند، برای تبدیل این رشته به عدد صحیح از تابع ()Int در استفاده کرده‌ایم. در نتیجه تابع ()Int رشته گرفته شده توسط تابع ()readLine را به نوع صحیح تبدیل کرده و در متغیرهای number1 و number2 می‌گذارد. با این وجود می‌توانیم دو متغیر را که عددی هستند با هم جمع کنیم.