Предикаты

Вспомним функцию isInfant() из прошлого урока:

<?php

function isInfant($age)
{
    return $age < 1;
}

var_dump(isInfant(3));
bool(false)

Подобные функции называют предикатами. Функции-предикаты (или функции-вопросы) отвечают на какой-то вопрос и всегда (без исключений!) возвращают либо true, либо false.

Предикаты во всех языках принято именовать особым образом для простоты анализа. В PHP предикаты, как правило, начинаются с префикса is, has или can, но не ограничены этими словами. Примеры:

  • isInfant() — «младенец ли?»
  • hasChildren() — «есть ли дети?»
  • isEmpty() — «пустой ли?»
  • hasErrors() — «есть ли ошибки?»

Функция может считаться предикатом, только если она возвращает bool.


Давайте напишем еще одну функцию-предикат. Она принимает строку и проверяет, является ли она словом 'Castle':

<?php

function isCastle($type)
{
    return $type === 'Castle';
}

var_dump(isCastle('Sea'));
bool(false)

Задание

Напишите функцию isMister(), которая принимает строку и проверяет, является ли она словом 'Mister'.

<?php

isMister('Mister'); // true
isMister('Missis'); // false

Советы

Определения

  • Предикат — выражение, отвечающее на вопрос «да» или «нет» с помощью типа bool.


Нашли ошибку? Есть что добавить? Пулреквесты приветствуются https://github.com/hexlet-basics
Если вы столкнулись с трудностями и не знаете, что делать, задайте вопрос в нашем большом и дружном cообществе
Упражнение доступно только авторизованным пользователям.

Пожалуйста, авторизуйтесь, это необходимо для отслеживания прогресса выполнения уроков. Если у вас ещё нет учётной записи, то сейчас самое время создать аккаунт.