تابع با تعداد آرگمان ورودی دلخواه !
سلام
توی سایر زبان ها ، میشد مثلا یه آرگمان تابع رو ننویسی ، اما توی جاوا همون تابع 10 جور syntax داره ، درسته واضح تر میکنه ، اما چطور میشه توی جاوا آرگمان optional (دلخواه ) گرفت ؟
سلام؛
توی #c خیلی خوب راحت تره ولی یه راهش توی جاوا به این شکله
public class OptArg {
public static void main(String[] args)
{
OptionalArgs("Sum 1 to 3",1 , 2, 3);
OptionalArgs("Sum");
}
private static void OptionalArgs(String sum_s, int... a)
{
int sum = 0;
if (a.length == 0)
{
sum = 6; //some optional value
System.out.println(sum_s + " 1 to 3" + " = " + sum);
} else {
for(int i = 0; i < a.length; i++)
{
sum += a[i];
}
System.out.println(sum_s + " = " + sum);
}
}
}
روشهای دیگه هم هست. شاید یه روش مشابه #c هم باشه. نمیدونم. ولی این روشی که گفتم برای خودم هم اصلا جذابیت نداره! ترجیح میدم اصلا ازش استفاده نکنم!
فرض کن شما یه تابع داری به نام plot که قراره برای شما نمودار بکشه. بنابراین متغیر اول شما یک آرایه از داده های x و متغیر شما یک آرایه از نوع y است. یعنی اگر بنویسی
plot(x, y)
نمودارش ترسیم میشه؛ کاری نداریم چطوری. حالا فرض کن ضخامت منخنی ترسیم شده 0.1 هست و شما دوست داری ضخامت منحنی ترسیم شده را تغییر بدی. اگر آرگومان سوم رو وارد نکنی، یعنی حالت پیش فرض رو قبول کرد (آپشنال) و اگر وارد کنی باید ضخامت جدید در نظر گرفته بشه.
حالا توی تعریف تابعت میگی اگر متغیر سوم وارد نشد، یعنی مقدارش null بود در نتیجه مقدار پیش فرض یعنی 0.1 درنظر گرفته بشه. اگر هم که وارد شده بود دیگه هیچی دیگه!
plot(x, y, 0.5)
تا این جا مشکل شما حل میشه.
از طرفی این روش این قابلیت رو به تابع شما میده که نه تنها یک متغیر آپشنال، بلکه بیشتر هم تعریف کنی. مثلا 2 تا، 3 تا و.... فقط تا جایی که میدونم باید آخرین آرگومان ورودی باشه؛ وسط تابع نمیشه تعریف کرد.
private static void printNum(String s, int... a){
int aa; // 'aa' is your target variable; 'a' is temporary.
// if (a == null) -> Exception will occur
// if (a[0] == null) -> Exception will occur
if (a.length == 0) // this means 'a' is null
{
// a[0] = 0; -> Exception will occur
aa = 0;
} else {
aa = a[0]; // set 'aa' value using 'a' first element
}
System.out.println(s + aa); // this line prints 's+aa' in Java
// Output window. Change it and use your code in ANDROID code.
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .