⚡️⚡️Function⚡️⚡️
1⃣
🔥توی دارت هر function خودش یه آبجکت به حساب میاد.
یعنی چی؟
✅یعنی دقیقن مثل وقتی که یک کلاس داریم و از اون کلاس یه آبجکت (نمونه /شی) میسازیم :
class User{}
var user = User() ;
یا وقتی که یه عدد صحیح تعریف میکنیم :
int a = 2;
و a یه ابجکت از کلاس int به حساب میاد.
دقیقن همین اتفاق هم برای function ها میوفته.
🔥توی دارت یه کلاس داریم به اسم
Function
همه function هایی که میسازیم یه ابجکت (نمونه) از این کلاس به حساب میان.
void myFunc() {}
print(myFunc is Function) //true
🔥پس وقتی که یه function مینویسیم، دارت واسمون یه ابجکت جدید از کلاس Function ایجاد میکنه و اسمی که ما برای اون function گذاشتیم مثل اسم یه متغیر هست (که یه رفرنس از اون ابجکت توی حافظه هست)
پس توی مثال بالا یه ابجکت از کلاس Function ایجاد میشه و myFunc یه متغیری هست که رفرنس اون ابجکت رو نگه میداره (دقیقن مثل قضیه کلاس ها)
#function
1⃣
🔥توی دارت هر function خودش یه آبجکت به حساب میاد.
یعنی چی؟
✅یعنی دقیقن مثل وقتی که یک کلاس داریم و از اون کلاس یه آبجکت (نمونه /شی) میسازیم :
class User{}
var user = User() ;
یا وقتی که یه عدد صحیح تعریف میکنیم :
int a = 2;
و a یه ابجکت از کلاس int به حساب میاد.
دقیقن همین اتفاق هم برای function ها میوفته.
🔥توی دارت یه کلاس داریم به اسم
Function
همه function هایی که میسازیم یه ابجکت (نمونه) از این کلاس به حساب میان.
void myFunc() {}
print(myFunc is Function) //true
🔥پس وقتی که یه function مینویسیم، دارت واسمون یه ابجکت جدید از کلاس Function ایجاد میکنه و اسمی که ما برای اون function گذاشتیم مثل اسم یه متغیر هست (که یه رفرنس از اون ابجکت توی حافظه هست)
پس توی مثال بالا یه ابجکت از کلاس Function ایجاد میشه و myFunc یه متغیری هست که رفرنس اون ابجکت رو نگه میداره (دقیقن مثل قضیه کلاس ها)
#function
⚡️Function⚡️⚡️
Callable class
2⃣
🔥یه مفهومی داریم توی دارت به اسم callabe class ها
این یعنی چی؟
✅کلاس زیر رو در نظر بگیرید
class User{}
حالا یه متدی به این کلاس اضافه میکنم به اسم call(اسم مهمه، حتمن باید همین اسم باشه)
class User{
void call(string name) {
print(name) ;
}
}
✔️اسم متد مهمه و حتمن باید call باشه .
✔️مقدار برگشتی (return) هر چیزی میتونه باشه .
✔️ارگومان های ورودی هر چیزی میتونن باشن.
حالا چه اتفاقی میوفته؟
✅یه ابجکت از کلاسم میسازم :
var myUser = User() :
🔥🔥حالا اگ دو تا پرانتز باز بسته بعد myUser بذارم متد call اجرا میشه، یعنی لازم نیست بگم
myUser.call('mohammad')
میگم
myUser('mohammad')
و اینجوری متد call اجرا میشه.
😍به این میگن callable class.
🔥خب حالا اگ متغیر myUser رو به ورودی یه function بدیم اون function با گذاشتن پرانتز باز و بسته میتونه اون رو اجرا کنه.
void func(User input) {
input() :
}
func(myUser) ;
#function
#callable_class
Callable class
2⃣
🔥یه مفهومی داریم توی دارت به اسم callabe class ها
این یعنی چی؟
✅کلاس زیر رو در نظر بگیرید
class User{}
حالا یه متدی به این کلاس اضافه میکنم به اسم call(اسم مهمه، حتمن باید همین اسم باشه)
class User{
void call(string name) {
print(name) ;
}
}
✔️اسم متد مهمه و حتمن باید call باشه .
✔️مقدار برگشتی (return) هر چیزی میتونه باشه .
✔️ارگومان های ورودی هر چیزی میتونن باشن.
حالا چه اتفاقی میوفته؟
✅یه ابجکت از کلاسم میسازم :
var myUser = User() :
🔥🔥حالا اگ دو تا پرانتز باز بسته بعد myUser بذارم متد call اجرا میشه، یعنی لازم نیست بگم
myUser.call('mohammad')
میگم
myUser('mohammad')
و اینجوری متد call اجرا میشه.
😍به این میگن callable class.
🔥خب حالا اگ متغیر myUser رو به ورودی یه function بدیم اون function با گذاشتن پرانتز باز و بسته میتونه اون رو اجرا کنه.
void func(User input) {
input() :
}
func(myUser) ;
#function
#callable_class
⚡️⚡️function⚡️⚡️
3⃣
🔥🔥حالا با توجه به اینکه گفتیم هر function که تعریف میکنیم یه ابجکت از کلاس Function ساخته میشه و مفهوم callable class ها، انتظار میره که درک کنید که وقتی یه function رو بدون پرانتز به ورودی یه متد پاس میدیم و اون متد با گذاشتن پرانتز اون رو اجرا میکنه چه اتفاقاتی داره میوفته. 😍😍
#function
3⃣
🔥🔥حالا با توجه به اینکه گفتیم هر function که تعریف میکنیم یه ابجکت از کلاس Function ساخته میشه و مفهوم callable class ها، انتظار میره که درک کنید که وقتی یه function رو بدون پرانتز به ورودی یه متد پاس میدیم و اون متد با گذاشتن پرانتز اون رو اجرا میکنه چه اتفاقاتی داره میوفته. 😍😍
#function