O malabarismo de tipos também pode ser conhecido como coerção de tipos. O malabarismo de tipos acontece quando dois valores de tipos diferentes são coagidos a assumir o mesmo tipo para realizar uma operação.
$baskets = 5 // int
$apples_per_basket = "3" // string
$baskets * $apples_per_basket
# => 15
Isso pode ser feito de forma implícita (veja o exemplo acima), ou de forma explícita com conversão de tipos no estilo C:
$apples_per_basket = "3" // string
$my_number = (int) $apples_per_basket // cast string to int
# => 3 // int
Os tipos permitidos para conversão manual de tipos são: bool, int, float, string, array, object.
Na maioria das vezes, a conversão de tipos é usada para transformar um inteiro (int) em um número de ponto flutuante (float) ou vice-versa.
Seu amigo Kojo é um grande fã de números. Ele tem um pequeno site para brincar com números. Kojo não é tão bom em programação, então pediu sua ajuda.
Você vai criar dois métodos auxiliares para novos jogos de números no site do Kojo e um terceiro para validar alguma entrada que o usuário pode digitar.
Um dos jogos no site do Kojo é como um caça-níqueis que mostra dois grupos de roletes com dígitos. Cada grupo de dígitos representa um número. Para a mecânica do jogo, Kojo precisa saber a soma desses dois números.
Escreva um método sumUp que aceita dois arrays como parâmetros.
Cada array é formado por um ou mais dígitos entre 0 e 9.
A função deve interpretar cada array como um número e retornar a soma desses dois números.
<?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
Outro jogo no site é um pequeno quiz chamado "Lucky Numbers". O usuário digita um número e então vê se ele pertence a alguma sequência ou padrão secreto. A sequência ou o padrão dos "lucky numbers" muda a cada mês, e cada usuário tem apenas um número limitado de tentativas para adivinhar.
Os lucky numbers deste mês devem ser números que são palíndromos. Números palindrômicos permanecem os mesmos quando os dígitos são invertidos.
Implemente a nova função isPalindrome que aceita um número inteiro como parâmetro.
A função deve retornar true se o número for um palíndromo e false caso contrário.
O número de entrada será sempre um número inteiro positivo.
<?php
$lucky_numbers = new LuckyNumbers()
$lucky_numbers->isPalindrome(1441);
//=> true
$lucky_numbers->isPalindrome(123);
//=> false
Em vários lugares do site, há campos de entrada onde os usuários podem digitar números e clicar em um botão para acionar alguma ação. Kojo quer melhorar a experiência do usuário no site dele. Ele quer mostrar uma mensagem de erro caso o usuário clique no botão, mas o campo contenha um valor de entrada inválido.
Aqui estão mais algumas informações sobre como o valor de um campo de entrada é fornecido.
Escreva uma função validate que aceita a entrada do usuário como parâmetro.
Se o usuário não forneceu nenhuma entrada, validate deve retornar 'Required field'.
Se a entrada não representar um número inteiro positivo diferente de zero (de acordo com as regras de conversão de tipos do PHP), 'Must be a whole number larger than 0' deve ser retornado.
Em todos os outros casos, você pode assumir que a entrada é válida; nesse caso, o valor de retorno deve ser uma string vazia.
<?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'
Crie sua conta no Exercism para aprender e dominar PHP com 11 conceitos122 exercícios e mentoria humana de verdade, tudo de graça.