PDA

View Full Version : varargs چیست و چگونه میشه ازش استفاده کرد؟!؟



mr_stone
پنج شنبه 14 فروردین 1393, 18:31 عصر
سلام به همه ی دوستان برنامه نویس
بچه ها اگه میشه برام توضیح بدین که varargs تویjava چیه و چطور میشه ازش استفاده کرد!؟!
ممنونم

cups_of_java
پنج شنبه 14 فروردین 1393, 19:25 عصر
به این معنی هست که شما می تونی تعداد "نامعین و نامعلومی" آرگومان ورودی در تعریف تابع داشته باشی... و در فراخوانی تابع ممکنه بخوای دو تا، سه تا ... یا بیشتر در هر فراخوانی بهش ورودی پاس کنی.
مثال کلاسیکش تابع جمع هست... فرض کن تابع add رو می نویسی که دو تا int میگیره. حالا واسه جمع سه عدد باید یه تابع add دیگه بنویسی که سه تا int میگیره (overload کردن اون اولی)
در حالی که تو زبانی که از varargs پشتیبانی کنه شما می تونی add رو یه بار فقط بنویسی و تعداد پارامتر ها رو نا معین (یا پویا) تعریف کنی.

int add( int... numbers ) {
//numbers مثل یک لیست یا آرایه از اعداد می مونه...
}

add( 2, 3 );
add( 4, 3, 1 );


در مواری بجای پاس کردن ارایه ای از ورودی ها می تونی از varagrs استفاده کنی و تک تک به تابع پاسشون کنی.
توصیح بیشتر (http://docs.oracle.com/javase/1.5.0/docs/guide/language/varargs.html)

mr_stone
جمعه 15 فروردین 1393, 12:14 عصر
بعد حالا اگه بخوام همین تابع جمع رو بنویسم!
باید از کاربر چطوری ورودی بگیرم؟!؟ ینی توی چی بریزم و به تابع ارسال کنم!؟!؟

cups_of_java
جمعه 15 فروردین 1393, 13:18 عصر
باید از کاربر چطوری ورودی بگیرم؟!؟ ینی توی چی بریزم و به تابع ارسال کنم!؟!؟
متوجه سوالت نمیشم.

ببین، شما یه تابع جمع می نویسی و توش از پارامتر هایی که طرف موقع فراخوانی فرستاده استفاده میکنی. اون ها رو به عنوان یه لیست می بینی یعنی در واقع متد ات این شکلی میشه:

int add( int... numbers ) {
int total = 0;
for( int i : numbers ) {
total += i;
}
return total;
}

و کسی که می خواد فراخوانیش کنه به سادگی مثل یه تابع معمولی می بینتش با این تفاوت که می تونه هرچند تا خواست پارامتر int بهش رد کنه.

add( 2, 4 )
add( 4, 5, 1 )