💎 یک متد با چند خروجی همزمان در جاوا
🔴 سوال: آیا متد میتونه همزمان چند مقدار رو ریترن کنه؟
🟢 جواب: هم آره و هم نه!
🔆 در واقع بصورت عادی یک متد فقط میتونه یک چیز رو ریترن کنه. پس نمیشه انتظار چند خروجی همزمان رو داشت
اما میشه داده رو یجورایی در قالب یه بسته خروجی داد که البته در زیر انواع روش ها رو برای این کار توضیح میدم:
🔅 استفاده از آرایه:
متدتون میتونه خروجی با استفاده از آرایه داشته باشه. مثلا فرض کنید یه متد دارین که مختصات پیش فرض رو برمیگردونه:
double[] defaultCoordinate(){
double[] co = new double[2];
co[0] = 2.0;
co[1] = 4.6;
return co;
}
🔅 استفاده از کلاس Pair:
کلاس Pair کلاسیه که فقط دو مقدار میتونه نگهداری کنه و ضمنا مقادیری که درش ذخیره میشه دیگه قابل تغییر نیست و فقط قابل دسترسیه. یعنی نمونه های این کلاس Immutable 🔗 هستن:
Pair<String,Double> studentInfo = new Pair<>("MohammadReza",14.5);
در نتیجه میشه خروجی یک متد رو یک نمونه از کلاس Pair گذاشت:
Pair stInfo(String name,double grade){
Pair<String,Double> studentInfo = new Pair<>(name,grade);
return studentInfo;
}
🔅 استفاده از کلاس های کتابخانه Tuple:
اگه بیشتر از 2 داده برای خروجی داشته باشید، میتونید از کلاس های کتابخونه Tuple استفاده کنید(کارکردشون دقیقا مشابه کلاس Pair اما برای ذخیره بیشتر از 2 داده):
For 1 element - Unit<A>
For 2 elements - Pair<A, B>
For 3 elements - Triplet<A, B, C>
For 4 elements - Quartet<A, B, C, D>
For 5 elements - Quintet<A, B, C, D, E>
For 6 elements - Sextet<A, B, C, D, E, F>
For 7 elements - Septet<A, B, C, D, E, F, G>
For 8 elements - Octet<A, B, C, D, E, F, G, H>
For 9 elements - Ennead<A, B, C, D, E, F, G, H, I>
For 10 elements - Decade<A, B, C, D, E, F, G, H, I, J>
🔅 کلاس خودتون رو تعریف کنید:
میتونید کلاس خودتون رو تعریف کنید و به تعدادی که میخواید براش فیلد تعریف کنید. در نهایت وقتی میخواید متدتون خروجی داشته باشه، نوع خروجی متدتون رو نمونه ای از کلاس تعریف شده قرار میدین. مثلا:
class Coordinate{
int x,y,z;
coordinate(int x,int y, int z){
this.x = x;
this.y = y;
this.z = z;
}
}
و حالا متدی که تعریف میکنیم:
Coordinate position(int x,int y, int z){
return new Coordinate(x,y,z);
}
که در واقع سه داده ورودی رو در قالب یک داده (از کلاس Coordinate) خروجی میده.
حرف آخر اینکه علاوه بر روش هایی که بالا تعریف کردیم، بازم میشه جور دیگه خروجی رو داد. مثلا میتونید از List یا Map هم استفاده کنید :)
———
#methods #return #tuple #pair
تیکه پاره های جاوا
@PieceJava
🔴 سوال: آیا متد میتونه همزمان چند مقدار رو ریترن کنه؟
🟢 جواب: هم آره و هم نه!
🔆 در واقع بصورت عادی یک متد فقط میتونه یک چیز رو ریترن کنه. پس نمیشه انتظار چند خروجی همزمان رو داشت
اما میشه داده رو یجورایی در قالب یه بسته خروجی داد که البته در زیر انواع روش ها رو برای این کار توضیح میدم:
🔅 استفاده از آرایه:
متدتون میتونه خروجی با استفاده از آرایه داشته باشه. مثلا فرض کنید یه متد دارین که مختصات پیش فرض رو برمیگردونه:
double[] defaultCoordinate(){
double[] co = new double[2];
co[0] = 2.0;
co[1] = 4.6;
return co;
}
🔅 استفاده از کلاس Pair:
کلاس Pair کلاسیه که فقط دو مقدار میتونه نگهداری کنه و ضمنا مقادیری که درش ذخیره میشه دیگه قابل تغییر نیست و فقط قابل دسترسیه. یعنی نمونه های این کلاس Immutable 🔗 هستن:
Pair<String,Double> studentInfo = new Pair<>("MohammadReza",14.5);
در نتیجه میشه خروجی یک متد رو یک نمونه از کلاس Pair گذاشت:
Pair stInfo(String name,double grade){
Pair<String,Double> studentInfo = new Pair<>(name,grade);
return studentInfo;
}
🔅 استفاده از کلاس های کتابخانه Tuple:
اگه بیشتر از 2 داده برای خروجی داشته باشید، میتونید از کلاس های کتابخونه Tuple استفاده کنید(کارکردشون دقیقا مشابه کلاس Pair اما برای ذخیره بیشتر از 2 داده):
For 1 element - Unit<A>
For 2 elements - Pair<A, B>
For 3 elements - Triplet<A, B, C>
For 4 elements - Quartet<A, B, C, D>
For 5 elements - Quintet<A, B, C, D, E>
For 6 elements - Sextet<A, B, C, D, E, F>
For 7 elements - Septet<A, B, C, D, E, F, G>
For 8 elements - Octet<A, B, C, D, E, F, G, H>
For 9 elements - Ennead<A, B, C, D, E, F, G, H, I>
For 10 elements - Decade<A, B, C, D, E, F, G, H, I, J>
🔅 کلاس خودتون رو تعریف کنید:
میتونید کلاس خودتون رو تعریف کنید و به تعدادی که میخواید براش فیلد تعریف کنید. در نهایت وقتی میخواید متدتون خروجی داشته باشه، نوع خروجی متدتون رو نمونه ای از کلاس تعریف شده قرار میدین. مثلا:
class Coordinate{
int x,y,z;
coordinate(int x,int y, int z){
this.x = x;
this.y = y;
this.z = z;
}
}
و حالا متدی که تعریف میکنیم:
Coordinate position(int x,int y, int z){
return new Coordinate(x,y,z);
}
که در واقع سه داده ورودی رو در قالب یک داده (از کلاس Coordinate) خروجی میده.
حرف آخر اینکه علاوه بر روش هایی که بالا تعریف کردیم، بازم میشه جور دیگه خروجی رو داد. مثلا میتونید از List یا Map هم استفاده کنید :)
———
#methods #return #tuple #pair
تیکه پاره های جاوا
@PieceJava
Telegram
تیکه پاره های جاوا
💎معنی Mutable و Immutable بودن کلاس ها (قابل تغییر و غیر قابل تغییر بودن)
🔅به آبجکت هایی که بعد از ایجاد شدن قابل تغییر هستند، Mutable گفته میشود. برای مثال کلاس Date یا StringBuilder
🔅در مقابل به ابجکت هایی که پس از ایجاد شدن قابل تغییر نیستند، Immutable…
🔅به آبجکت هایی که بعد از ایجاد شدن قابل تغییر هستند، Mutable گفته میشود. برای مثال کلاس Date یا StringBuilder
🔅در مقابل به ابجکت هایی که پس از ایجاد شدن قابل تغییر نیستند، Immutable…
👍10