Skip to content

Commit 03620be

Browse files
committed
OpenSourceTutorials-Introduction v2.1.6 - nope, not working
1 parent 378254c commit 03620be

File tree

1 file changed

+10
-21
lines changed

1 file changed

+10
-21
lines changed

src/type-casting-in-kotlin/README.md

Lines changed: 10 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,6 @@
1-
---
2-
layout: tutorial
3-
title: "type casting در کاتلین"
4-
category: introduction
5-
permalink: /tutorials/introduction/type-casting-in-kotlin/
6-
editlink: https://github.com/KotlinFarsi/OpenSourceTutorials-Introduction/edit/master/src/type-casting-in-kotlin/README.md
7-
---
8-
9-
10-
<div dir="rtl" markdown="1">
11-
1+
<div dir="rtl">
122

3+
# type casting در کاتلین
134

145
پیشنهاد میشه این قسمت رو بر روی IntellJ IDEA امتحان کنید
156

@@ -28,7 +19,7 @@ fun main(args: Array<String>) {
2819
}
2920
```
3021

31-
<div dir="rtl" markdown="1">
22+
<div dir="rtl">
3223

3324
و خب گفتیم اگه متغیری بتونه مقدار null رو بگیره، باید قبل استفاده ازش چک بشه، و چک کردنش رو هم با "?" انجام میدادیم. خب حالا اگه بیاین قبل استفاده از nullMessage یک مقدار بهش بدین
3425

@@ -42,7 +33,7 @@ fun main(args: Array<String>) {
4233
}
4334
```
4435

45-
<div dir="rtl" markdown="1">
36+
<div dir="rtl">
4637

4738
کامپایلر یه اخطار کوچولو بهمون میده و میگه : "نیازی نیست متغیر غیر null رو چک کنیم".یعنی میتونیم "?" رو برداریم.
4839

@@ -56,7 +47,7 @@ fun main(args: Array<String>) {
5647
}
5748
```
5849

59-
<div dir="rtl" markdown="1">
50+
<div dir="rtl">
6051

6152
ولی خب تا اون رو برمیداریم اون متغیر یک بک گراند سبز میگیره به خودش و اگه بریم و موس رو روش نگه داریم متوجه میشیم که نوشته "Smart cast to kotlin.String". این به چه معنیه؟ بهتون نشون میدم.
6253

@@ -86,7 +77,7 @@ fun main(args: Array<String>) {
8677
}
8778
```
8879

89-
<div dir="rtl" markdown="1">
80+
<div dir="rtl">
9081

9182
خب تا اینجا کار خاصی نکردیم.دوتا کلاس ساختیم به نام های Employee و Contactor که از کلاس Person ارث بری میشن و همچنین داخل Employee یک متد ساختیم. خب حالا بعدش اومدیم و یک تابع داخل فایلمون ساختیم به نام hasVacations که توش یک شرط داره که البته بدنه شرط رو هنوز ننوشتیم، ولی خب میدونیم که اگر obj یک شی از نوع Employee بود داخل if میره. خب اگه بریم داخل if و بخوایم بنویسم obj.vacationDays متوجه میشیم که IntelliJ برامون ادامه اش رو مینویسه! توجه کنین که obj از نوع کلاس Person بود که تابعی به اون اسم نداره! اگه کد رو کامل بنویسیم متوجه میشیم که دوباره همون حالت پیش میاد، دوباره مینویسه "Smart casting to Employee" .
9283

@@ -115,7 +106,7 @@ fun main(args: Array<String>) {
115106
}
116107
```
117108

118-
<div dir="rtl" markdown="1">
109+
<div dir="rtl">
119110

120111
یعنی کامپایلر میاد میگه " من متوجه میشم که زمانی این کد اجرا میشه که obj یک Employee باشه و نیازی نیست که مثل جاوا اینجوری (Employee)obj.vacationDays(20) بنویسیمش
121112

@@ -133,7 +124,7 @@ fun main(args: Array<String>) {
133124
}
134125
```
135126

136-
<div dir="rtl" markdown="1">
127+
<div dir="rtl">
137128

138129
درواقع کامپایلر اینجا میگه "من میدونم این متغیر رو جوری تعریف کردی که میتونه null باشه، ولی خب قبل چک کردنش بهش مقدار دادی، پس من خودم به یک رشته(غیر قابل null شدن) تبدیلش میکنم که نیازی نداشته باشه که چک بشه!"
139130

@@ -151,15 +142,13 @@ fun main(args: Array<String>) {
151142
}
152143
```
153144

154-
<div dir="rtl" markdown="1">
145+
<div dir="rtl">
155146

156147
اینجا گفتیم که میدونیم input از جنس Any هستش، ولی اینجا میخوایم به String کستش کنیم و طولش رو برام بگیریم. تنها کاری که کردیم اون وسط این بود که از کلیدواژه as استفاده کردیم.
157148

158149
البته خب قبل اجرا هیچ مشکلی نداشتیم و هیچ اروری هم نبود. ولی خب وقتی کد رو اجرا میکنیم به ارور میخوریم
159150

160-
<p style="width: calc(100% + 60px);">
161151
<img src="./result-1.PNG" />
162-
</p>
163152

164153
و اونم به این دلیله که اگه یادتون باشه گفتیم هیچ گونه کستینگ به صورت لفظی در کاتلین نداریم و اگه بخوایم یک متغیر رو کست کنیم باید از توابعش استفاده کنیم.
165154

@@ -177,7 +166,7 @@ fun main(args: Array<String>) {
177166
}
178167
```
179168

180-
<div dir="rtl" markdown="1">
169+
<div dir="rtl">
181170

182171
به این معنی که من این دفعه "تلاش" میکنم که input رو به String تبدیل کنم.
183172

0 commit comments

Comments
 (0)