ورود

View Full Version : مبتدی: نحوه پاس دادن شی به یک متد



ehsan_faal
پنج شنبه 30 بهمن 1393, 12:36 عصر
سلام دوستان.
من تازه دارم روی مفاهیم شی گرایی کار میکنم و یه سوال واسم پیش اومده، امیدوارم بتونید کمکم کنید:
متد replaceAll که واسه جایگزینی یه قسمتی از یه رشته با یه رشته دلخواه استفاده میشه رو در نظر بگیرید،از نحوه فراخوانیش معلومه که به طور مستقیم شی رو بهش پاس نمیدیم و مثلا یه سازنده ای قبلش وجود داره که رشته رو میسازه و قاعدتا این متد هم به اون رشته دسترسی داره.

String Str="Hello World!";
Str=replacAll("W","w");

حالا سوال من اینجاست که چه جوری این متد رو نوشتن که میشه بلافاصله بعد از این که یه بار این متد فراخوانی بشه با گذاشتن یه دات دوباره فراخوانیش کرد؟
یعنی منظورم اینه که برای اینکه این تغییرات روی شی رشته ذخیره بشه حتما باید اون رو بریزم توی یه رشته دیگه و طبق چیزی که من تا حالا تست کردم استفاده از این متد بدون مقدار بازگشتی هیچ فایدهای نداره و اینجور نیست که شی رو آپدیت کنه.خب حالا اگه با یه بار استفاده از این متد شی آپدیت نمیشه یعنی شی جدیدی ساخته نمیشه پس چطور این متد که غیر مستقیم شی رو میگرفت میتونه چندین بار پشت سر هم استفاده بشه؟

String Str="Hello World!";
Str=replacAll("W","w").replaceAll("H","h");

محمد فدوی
پنج شنبه 30 بهمن 1393, 15:41 عصر
سلام. متد replaceAll اون رشته‌ی نهایی رو برمیگردونه که کار جایگزین کردن کاراکترها توش انجام شده. خب مقدار خروجی وقتی یه رشته باشه بازم میشه روی عمل جایگزین کردن رو انجام داد دیگه. یعنی شما وقتی مینویسی:

String str = "Hello World";
String tempStr = str.replaceAll("W", "w");
String finalStr = tempStr.replaceAll("H", "h");


واضحه که میتونی tempStr رو حذف کنی و کل کار رو یکجا انجام بدی. حتی میتونی خود str رو هم حذف کنی و همه‌ی کارها رو توی یه خط انجام بدی!!



finalStr = "Hello World".replaceAll("W", "w").replaceAll("H", "h");

موفق باشی.