بازی با نوع را با نام «تبدیل اجباری نوع» هم میشناسند. بازی با نوع به این معناست که دو مقدار از دو نوع متفاوت برای انجام یک عملیات به یک نوع واحد تبدیل اجباری میشوند.
$baskets = 5 // int
$apples_per_basket = "3" // string
$baskets * $apples_per_basket
# => 15
این کار میتواند بهصورت ضمنی انجام شود (به مثال بالا نگاه کنید)، یا بهصورت صریح با «تبدیل نوع» به سبک C:
$apples_per_basket = "3" // string
$my_number = (int) $apples_per_basket // cast string to int
# => 3 // int
نوعهای مجاز برای تبدیل نوع دستی عبارتاند از: bool، int، float، string، array، object.
بیشتر از همه، از تبدیل نوع برای تغییر یک عدد صحیح (int) به یک عدد اعشاری (float) یا برعکس استفاده میشود.
دوستتان Kojo عاشق اعداد است. او یک وبسایت کوچک برای سرگرمی با اعداد دارد. Kojo در برنامهنویسی چندان ماهر نیست، برای همین از شما کمک خواسته است.
شما دو متد کمکی برای بازیهای عددی تازه در وبسایت Kojo میسازید و یک متد سوم هم برای اعتبارسنجی ورودیای که کاربر میتواند وارد کند.
یکی از بازیهای وبسایت Kojo شبیه ماشین اسلاتی است که دو گروه چرخ را نشان میدهد که رقمهایی روی آنها نوشته شده است. هر گروه از رقمها نمایندهی یک عدد است. Kojo برای مکانیک بازی باید مجموع آن دو عدد را بداند.
متدی به اسم sumUp بنویسید که دو آرایه را به عنوان پارامتر میپذیرد.
هر آرایه از یک یا چند رقم بین ۰ تا ۹ تشکیل شده است.
این تابع باید هر آرایه را به عنوان یک عدد تفسیر کند و مجموع آن دو عدد را برگرداند.
<?php
$lucky_numbers = new LuckyNumbers()
$lucky_numbers->sumUp([1, 2, 3], [0, 7]);
//=> 130
// [1, 2, 3] represents 123 and [0, 7] represents 7.
// 123 + 7 = 130
یک بازی دیگر در وبسایت، آزمون کوتاهی به اسم «شمارههای خوششانس» است. کاربر میتواند یک عدد وارد کند و بعد ببیند که آن عدد به دنباله یا الگوی خاصی تعلق دارد یا نه. دنباله یا الگوی «شمارههای خوششانس» هر ماه عوض میشود و هر کاربر فقط تعداد محدودی فرصت برای حدس آن دارد.
شمارههای خوششانس این ماه باید عددهایی باشند که «پالیندروم» هستند. عددهای پالیندروم وقتی رقمهایشان برعکس میشود، تغییری نمیکنند.
تابع جدید isPalindrome را پیادهسازی کنید که یک عدد صحیح را به عنوان پارامتر میپذیرد.
این تابع اگر عدد پالیندروم باشد باید true برگرداند و در غیر این صورت false.
عدد ورودی همیشه یک عدد صحیح مثبت خواهد بود.
<?php
$lucky_numbers = new LuckyNumbers()
$lucky_numbers->isPalindrome(1441);
//=> true
$lucky_numbers->isPalindrome(123);
//=> false
در جاهای مختلف وبسایت، کادرهای ورودیای وجود دارد که کاربران میتوانند در آنها عدد وارد کنند و برای انجام یک کار روی دکمهای کلیک کنند. Kojo میخواهد تجربهی کاربری سایتش را بهتر کند. او میخواهد اگر کاربر روی دکمه کلیک کرد اما کادر مقدار ورودی نامعتبری داشت، یک پیام خطا نشان دهد.
در ادامه چند نکتهی بیشتر دربارهی نحوهی ارائهی مقدار یک کادر ورودی آورده شده است.
تابعی به اسم validate بنویسید که ورودی کاربر را به عنوان پارامتر میپذیرد.
اگر کاربر هیچ ورودیای نداده باشد، validate باید 'Required field' را برگرداند.
اگر ورودی نمایندهی یک عدد صحیح مثبت و ناصفر نباشد (بر اساس قواعد تبدیل نوع PHP)، باید 'Must be a whole number larger than 0' برگردانده شود.
در بقیهی حالتها میتوانید فرض کنید ورودی معتبر است؛ در آن صورت مقدار بازگشتی باید یک رشتهی خالی باشد.
<?php
$lucky_numbers = new LuckyNumbers()
$lucky_numbers->validate('123');
// => ''
$lucky_numbers->validate('');
// => 'Required field'
$lucky_numbers->validate('abc');
// => 'Must be a whole number larger than 0'