C#: Предикаты
Вспомним метод IsInfant() из прошлого урока:
public static bool IsInfant(int age)
{
return age < 1;
}
Console.WriteLine(App.IsInfant(3)); // => falseПодобные методы называют предикатами. методы-предикаты (или методы-вопросы) отвечают на какой-то вопрос и всегда (без исключений!) возвращают либо true, либо false.
Предикаты во всех языках принято именовать особым образом для простоты анализа. В C# предикаты, как правило, начинаются с префикса Is, Has или Can, но не ограничены этими словами. Примеры:
IsInfant()— «младенец ли?»HasChildren()— «есть ли дети?»IsEmpty()— «пустой ли?»HasErrors()— «есть ли ошибки?»
Метод может считаться предикатом только если он возвращает bool.
Давайте напишем ещё один метод-предикат. Он принимает строку и проверяет, является ли она словом 'Castle':
public static bool IsCastle(string building)
{
return building == "Castle";
}
Console.WriteLine(App.IsCastle("Sea")); // => falseЗадание
Напишите метод IsMister(), который принимает строку и проверяет, является ли она словом "Mister".
Примеры вызова:
App.IsMister("Mister"); // true
App.IsMister("Miss"); // falseПолезное
C#: Предикаты
Вспомним метод IsInfant() из прошлого урока:
public static bool IsInfant(int age)
{
return age < 1;
}
Console.WriteLine(App.IsInfant(3)); // => falseПодобные методы называют предикатами. методы-предикаты (или методы-вопросы) отвечают на какой-то вопрос и всегда (без исключений!) возвращают либо true, либо false.
Предикаты во всех языках принято именовать особым образом для простоты анализа. В C# предикаты, как правило, начинаются с префикса Is, Has или Can, но не ограничены этими словами. Примеры:
IsInfant()— «младенец ли?»HasChildren()— «есть ли дети?»IsEmpty()— «пустой ли?»HasErrors()— «есть ли ошибки?»
Метод может считаться предикатом только если он возвращает bool.
Давайте напишем ещё один метод-предикат. Он принимает строку и проверяет, является ли она словом 'Castle':
public static bool IsCastle(string building)
{
return building == "Castle";
}
Console.WriteLine(App.IsCastle("Sea")); // => falseЗадание
Напишите метод IsMister(), который принимает строку и проверяет, является ли она словом "Mister".
Примеры вызова:
App.IsMister("Mister"); // true
App.IsMister("Miss"); // falseПолезное
Ваше упражнение проверяется по этим тестам
#load "/src/Init.csx"
#load "Exercise.csx"
;
using PowerAssert;
var actual1 = App.IsMister("8234782");
PAssert.IsTrue(() => actual1 == false);
var actual2 = App.IsMister("Joker");
PAssert.IsTrue(() => actual2 == false);
var actual3 = App.IsMister("Mister");
PAssert.IsTrue(() => actual3 == true);Решение учителя откроется через:
20:00
