टाइप जगलिंग को टाइप कोएर्शन के नाम से भी जाना जाता है। टाइप जगलिंग तब होती है जब कोई काम करने के लिए अलग-अलग टाइप की दो वैल्यू को एक ही टाइप में बदल दिया जाता है।
$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) में बदलने के लिए किया जाता है, या इसके उलट।
आपका दोस्त कोजो संख्याओं का बहुत बड़ा शौकीन है। उसकी संख्याओं के साथ खेलने के लिए एक छोटी सी वेबसाइट है। कोजो प्रोग्रामिंग में उतना अच्छा नहीं है, इसलिए उसने आपसे मदद माँगी है।
आप कोजो की वेबसाइट पर संख्याओं वाले नए गेम्स के लिए दो मददगार मेथड बनाएँगे। इसके अलावा एक तीसरा मेथड बनाएँगे, जो उपयोगकर्ता के डाले गए इनपुट की जाँच करेगा।
कोजो की वेबसाइट के एक गेम में एक स्लॉट मशीन जैसा दिखता है। इसमें अंकों वाले पहियों के दो समूह दिखते हैं। अंकों का हर समूह एक संख्या को दर्शाता है। गेम के नियमों के लिए कोजो को इन दोनों संख्याओं का जोड़ जानना है।
एक मेथड sumUp लिखिए जो पैरामीटर के तौर पर दो ऐरे लेता है।
हर ऐरे में 0 से 9 के बीच एक या अधिक अंक होते हैं।
फंक्शन को हर ऐरे को एक संख्या मानना चाहिए और इन दोनों संख्याओं का जोड़ लौटाना चाहिए।
<?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
वेबसाइट पर कई जगहों पर इनपुट फील्ड हैं, जहाँ उपयोगकर्ता संख्याएँ डालकर किसी काम को शुरू करने के लिए एक बटन पर क्लिक कर सकते हैं। कोजो अपनी साइट का उपयोगकर्ता अनुभव बेहतर बनाना चाहता है। अगर उपयोगकर्ता बटन पर क्लिक करता है, लेकिन फील्ड में अमान्य इनपुट वैल्यू हो, तो वह एक एरर मैसेज दिखाना चाहता है।
इनपुट फील्ड की वैल्यू कैसे मिलती है, इस बारे में कुछ और जानकारी यह है।
एक फंक्शन 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'
Exercism पर साइन अप कीजिए और PHP को 11 कॉन्सेप्ट122 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।