Type Juggling wird auch als Typumwandlung bezeichnet. Type Juggling bedeutet, dass zwei Werte unterschiedlicher Typen in denselben Typ umgewandelt werden, um eine Operation auszuführen.
$baskets = 5 // int
$apples_per_basket = "3" // string
$baskets * $apples_per_basket
# => 15
Das kann implizit geschehen (siehe obiges Beispiel) oder explizit mit einer Typumwandlung im C-Stil:
$apples_per_basket = "3" // string
$my_number = (int) $apples_per_basket // cast string to int
# => 3 // int
Erlaubte Typen für eine manuelle Typumwandlung sind: bool, int, float, string, array, object.
Am häufigsten wird die Typumwandlung verwendet, um eine Ganzzahl (int) in eine Gleitkommazahl (float) umzuwandeln oder umgekehrt.
Dein Freund Kojo ist ein großer Zahlenfan. Er hat eine kleine Website, auf der er mit Zahlen herumspielt. Kojo ist nicht besonders gut im Programmieren, deshalb hat er dich um Hilfe gebeten.
Du baust zwei Hilfsmethoden für neue Zahlenspiele auf Kojos Website und eine dritte, mit der du eine Eingabe überprüfst, die der Nutzer machen kann.
Eines der Spiele auf Kojos Website sieht aus wie ein Spielautomat, der zwei Gruppen von Walzen mit Ziffern darauf zeigt. Jede Zifferngruppe stellt eine Zahl dar. Für die Spielmechanik muss Kojo die Summe dieser beiden Zahlen kennen.
Schreibe eine Methode sumUp, die zwei Arrays als Parameter entgegennimmt.
Jedes Array besteht aus einer oder mehreren Ziffern zwischen 0 und 9.
Die Funktion soll jedes Array als Zahl interpretieren und die Summe dieser beiden Zahlen zurückgeben.
<?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
Ein weiteres Spiel auf der Website ist ein kleines Quiz namens „Lucky Numbers“. Ein Nutzer kann eine Zahl eingeben und sieht dann, ob die Zahl zu einer geheimen Folge oder einem Muster gehört. Die Folge bzw. das Muster der „Lucky Numbers“ ändert sich jeden Monat, und jeder Nutzer hat nur eine begrenzte Anzahl an Versuchen, um es zu erraten.
Die Lucky Numbers dieses Monats sollen Zahlen sein, die Palindrome sind. Palindromzahlen bleiben gleich, wenn man die Ziffern umdreht.
Implementiere die neue Funktion isPalindrome, die eine Ganzzahl als Parameter entgegennimmt.
Die Funktion soll true zurückgeben, wenn die Zahl ein Palindrom ist, und andernfalls false.
Die eingegebene Zahl ist immer eine positive Ganzzahl.
<?php
$lucky_numbers = new LuckyNumbers()
$lucky_numbers->isPalindrome(1441);
//=> true
$lucky_numbers->isPalindrome(123);
//=> false
An verschiedenen Stellen der Website gibt es Eingabefelder, in die Nutzer Zahlen eingeben und dann auf eine Schaltfläche klicken können, um eine Aktion auszulösen. Kojo möchte die Nutzererfahrung seiner Website verbessern. Er möchte eine Fehlermeldung anzeigen, wenn der Nutzer auf die Schaltfläche klickt, das Feld aber einen ungültigen Eingabewert enthält.
Hier sind noch ein paar Informationen dazu, wie der Wert eines Eingabefelds bereitgestellt wird.
Schreibe eine Funktion validate, die die Nutzereingabe als Parameter entgegennimmt.
Wenn der Nutzer keine Eingabe gemacht hat, soll validate 'Required field' zurückgeben.
Wenn die Eingabe keine positive ganze Zahl ungleich null darstellt (gemäß den Typumwandlungsregeln von PHP), soll 'Must be a whole number larger than 0' zurückgegeben werden.
In allen anderen Fällen kannst du davon ausgehen, dass die Eingabe gültig ist; der Rückgabewert ist dann ein leerer String.
<?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'
Melde dich bei Exercism an, um PHP mit 11 Konzepte122 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.