کاتلین یک مجموعه عملگرها دارد که برای اجرای عملیات حسابی انتسابی، مقایسهای و غیره استفاده میشوند. عملگرها نمادهای خاصی هستند که روی عملوندهای یک عملیات یعنی متغیرها و مقادیر اجرا میشوند. برای نمونه عملگر + برای جمع زدن اعداد مورد استفاده قرار میگیرد. در این بخش به بررسی عملگرهای کاتلین میپردازیم.
عملگرهای حسابی در کاتلین
فهرست عملگرهای حسابی و کارکرد آنها در کاتلین به شرح زیر است:
عملگر | توضیح |
---|---|
+ | جمع (برای الحاق دو رشته نیز استفاده میشود.) |
– | عملگر تفریق |
* | عملگر ضرب |
/ | عملگر تقسیم |
% | عملگر باقیمانده |
مثال عملگرهای حسابی در کاتلین
fun main(args: Array<String>) {
val number1 = 12.5 val number2 = 3.5 var result: Double result = number1 + number2 println("number1 + number2 = $result")
result = number1 - number2 println("number1 - number2 = $result")
result = number1 * number2 println("number1 * number2 = $result")
result = number1 / number2 println("number1 / number2 = $result")
result = number1 % number2 println("number1 % number2 = $result")
}
خروجی برنامه فوق چنین است:
number1 + number2 = 16.0 number1 - number2 = 9.0 number1 * number2 = 43.75 number1 / number2 = 3.5714285714285716 number1% number2 = 2.0
عملگر + برای الحاق مقادیر string استفاده میشود.
مثالی از الحاق رشتهها
fun main(args: Array<String>) {
val start = "Talk is cheap. " val middle = "Show me the code. " val end = "- Linus Torvalds"
val result = start + middle + end println(result)
}
خروجی برنامه فوق به صورت زیر است:
Talk is cheap. Show me the code. - Linus Torvalds
طرز کار عملگرهای حسابی چگونه است؟
فرض کنید از عملگر + برای جمع زدن دو عدد a و b استفاده میکنیم. در پشت صحنه a + b تابع عضو a.plus(b) را فراخوانی میکند. عملگر plus طوری overload شده که با مقادیر String و دیگر انواع داده مقدماتی (به جز Char و Boolean) نیز کار کند.
// + operator for basic types operator fun plus(other: Byte): Int operator fun plus(other: Short): Int operator fun plus(other: Int): Int operator fun plus(other: Long): Long operator fun plus(other: Float): Float operator fun plus(other: Double): Double
// for string concatenation operator fun String?.plus(other: Any?): String
همچنین میتوانید از عملگر + و از طریق overload کردن تابع ()plus برای کار با انواع تعریف شده از سوی کاربر (مانند شیءها) استفاده کنید. در جدول زیر عملگرهای حسابی و تابعهای متناظر آنها ارائه شده است:
عبارت | نام تابع | ترجمه |
---|---|---|
a + b | plus | a.plus(b) |
a – b | minus | a.minus(b) |
a * b | times | a.times(b) |
a / b | div | a.div(b) |
a % b | mod | a.mod(b) |
عملگرهای انتساب
عملگرهای انتساب برای نسبت دادن یک مقدار به متغیر استفاده میشوند. ما قبلاً نمونهای از کاربرد عملگر انتساب ساده (=) را دیدهایم.
val age = 5
در مقال فوق مقدار 5 با استفاده از عملگر = به متغیر age انتساب مییابد. در ادامه فهرستی از همه عملگرهای انتساب و تابعهای متناظر آنها را میبینید:
عبارت | معادل | ترجمه |
---|---|---|
a +=b | a = a + b | a.plusAssign(b) |
a -= b | a = a – b | a.minusAssign(b) |
a *= b | a = a * b | a.timesAssign(b) |
a /= b | a = a / b | a.divAssign(b) |
a %= b | a = a % b | a.modAssign(b) |
مثالی از عملگرهای انتساب
fun main(args: Array<String>) { var number = 12
number *= 5 // number = number*5 println("number = $number")
}
با اجرای کد فوق خروجی زیر به دست میآید:
number = 60
عملگرهای پیشوند یکانی (Unary prefix) و افزایش/کاهش در کاتلین
در این بخش فهرستی از عملگرهای یکانی، معنای آنها و تابعهای معادلشان ارائه شده است:
عملگر | معنا | عبارت | ترجمه |
---|---|---|---|
+ | جمع یکانی | +a | ()a.unaryPlus |
– | منهای یکانی ( معکوسسازی علامت) | -a | ()a.unaryMinus |
! | نه (معکوس مقدار) | !a | ()a.not |
++ | افزایش به مقدار 1 واحد | ++a | ()a.inc |
— | کاهش به مقدار 1 واحد | –a | ()a.dec |
مثالی از عملگرهای یکانی
fun main(args: Array<String>) { val a = 1 val b = true var c = 1
var result: Int var booleanResult: Boolean result = -a println("-a = $result")
booleanResult = !b println("!b = $booleanResult")
--c println("--c = $c")
}
کد فوق خروجی زیر را تولید میکند:
-a = -1 !b = false --c = 0
عملگرهای مقایسه و برابری
در ادامه جدولی از عملگرهای برابری و مقایسهای را به همراه معنا و تابعهای متناظرشان میبینید:
عملگر | معنا | عبارت | ترجمه |
---|---|---|---|
> | بزرگتر از | a > b | a.compareTo(b) > 0 |
< | کوچکتر از | a < b | a.compareTo(b) < 0 |
>= | بزرگتر مساوی | a >= b | a.compareTo(b) >= 0 |
<= | کوچکتر مساوی | a < = b | a.compareTo(b) <= 0 |
== | برابر است با | a == b | a?.equals(b) ?: (b === null) |
!= | برابر نیست با | a != b | !(a?.equals(b) ?: (b === null)) |
عملگرهای مقایسه و برابری در گردش کنترل از قبیل عبارت if، عبارت when و حلقهها مورد استفاده قرار میگیرند.
مثالی از عملگرهای مقایسهای و برابری
fun main(args: Array<String>) {
val a = -12 val b = 12
// use of greater than operator val max = if (a > b) { println("a is larger than b.") a } else { println("b is larger than a.") b }
println("max = $max")
}
خروجی اجرای کد فوق به صورت زیر است:
b is larger than a. max = 12
عملگرهای منطقی
دو عملگر منطقی به صورت || و && در کاتلین وجود دارند. در ادامه جدولی از عملگرهای منطقی، معنا و تابعهای متناظر آنها را مشاهده میکنید:
عملگر | توصیف | عبارت | تابع متناظر |
---|---|---|---|
|| | در صورت true بودن هر یک از اجزا، true خواهد بود. | (a>b)||(a<c) | (a>b)or(a<c |
&& | در صورت true بودن همه عبارتها مقدار true خواهد بود. | (a>b)&&(a<c) | (a>b)and(a<c) |
توجه کنید که or و and تابعهایی هستند که از نمادگذاری میانوندی (infix notation) پشتیبانی میکنند. عملگرهای منطقی در گردش کنترل در عبارتهایی مانند if و when و همچنین حلقهها کاربرد دارند.
مثالی از عملگرهای منطقی
fun main(args: Array<String>) {
val a = 10 val b = 9 val c = -1 val result: Boolean // result is true is a is largest result = (a>b) && (a>c) // result = (a>b) and (a>c) println(result)
}
خروجی اجرای کد فوق به صورت زیر است:
true