A conversão de tipos também pode ser conhecida como coerção de tipos. A conversão de tipos acontece quando dois valores de tipos diferentes são convertidos para o mesmo tipo para realizar uma operação.
$baskets = 5 // int
$apples_per_basket = "3" // string
$baskets * $apples_per_basket
# => 15
Isto pode ser feito de forma implícita (vê o exemplo acima) ou de forma explícita, com a conversão de tipos ao estilo do C:
$apples_per_basket = "3" // string
$my_number = (int) $apples_per_basket // cast string to int
# => 3 // int
Os tipos permitidos para a conversão manual são: bool, int, float, string, array, object.
O mais comum é usar a conversão de tipos para transformar um número inteiro (int) num número de vírgula flutuante (float), ou vice-versa.
O teu amigo Kojo é um grande fã de números. Tem um pequeno site para brincar com números. O Kojo não é muito bom a programar, por isso pediu-te ajuda.
Vais criar dois métodos auxiliares para novos jogos de números no site do Kojo e um terceiro para validar os dados que o utilizador pode introduzir.
Um dos jogos do site do Kojo parece uma slot machine que mostra dois grupos de rodas com algarismos. Cada grupo de algarismos representa um número. Para a mecânica do jogo, o Kojo precisa de saber a soma desses dois números.
Escreve um método sumUp que aceita dois arrays como parâmetros.
Cada array é composto por um ou mais algarismos entre 0 e 9.
A função deve interpretar cada array como um número e devolver 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 do site é um pequeno questionário chamado "Lucky Numbers". O utilizador pode introduzir um número e depois vê se esse número pertence a uma sequência ou padrão secreto. A sequência ou padrão dos "números da sorte" muda todos os meses e cada utilizador só tem um número limitado de tentativas para o adivinhar.
Os números da sorte deste mês devem ser números capicuas. Os números capicuas mantêm-se iguais quando se invertem os algarismos.
Implementa a nova função isPalindrome que aceita um número inteiro como parâmetro.
A função deve devolver true se o número for uma capicua e false caso contrário.
O número introduzido será sempre um inteiro positivo.
<?php
$lucky_numbers = new LuckyNumbers()
$lucky_numbers->isPalindrome(1441);
//=> true
$lucky_numbers->isPalindrome(123);
//=> false
Em vários sítios do site há campos de introdução onde os utilizadores podem escrever números e clicar num botão para desencadear uma ação. O Kojo quer melhorar a experiência de utilização do seu site. Quer mostrar uma mensagem de erro caso o utilizador clique no botão mas o campo contenha um valor inválido.
Eis mais alguma informação sobre como é fornecido o valor de um campo de introdução.
Escreve uma função validate que aceita o valor introduzido pelo utilizador como parâmetro.
Se o utilizador não introduziu nada, validate deve devolver 'Required field'.
Se o que foi introduzido não representar um número inteiro positivo diferente de zero (de acordo com as regras de conversão de tipos do PHP), deve ser devolvido 'Must be a whole number larger than 0'.
Em todos os outros casos podes assumir que o valor introduzido é válido; nesse caso, o valor devolvido 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'
Inscreve-te no Exercism para aprenderes e dominares PHP com 11 conceitos122 exercícios, e mentoria humana real, tudo grátis.