کاتلین یک مجموعه عملگرها دارد که برای اجرای عملیات حسابی انتسابی، مقایسهای و غیره استفاده میشوند. عملگرها نمادهای خاصی هستند که روی عملوندهای یک عملیات یعنی متغیرها و مقادیر اجرا میشوند. برای نمونه عملگر + برای جمع زدن اعداد مورد استفاده قرار میگیرد. در این بخش به بررسی عملگرهای کاتلین میپردازیم.
عملگرهای حسابی در کاتلین
فهرست عملگرهای حسابی و کارکرد آنها در کاتلین به شرح زیر است:
| عملگر | توضیح |
|---|---|
| + | جمع (برای الحاق دو رشته نیز استفاده میشود.) |
| – | عملگر تفریق |
| * | عملگر ضرب |
| / | عملگر تقسیم |
| % | عملگر باقیمانده |
مثال عملگرهای حسابی در کاتلین
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



