4 4 Ссылка на функцию

Ссылка на функцию

Ссылки на функцию это способ передавать и хранить функции. Учитывая всё вышесказанное в пункте 4 2 Контракты и выбор мы можем хранить в ссылке не одну функцию, а сразу несколько вероятных функций, доступных по одной переменной. Для конкретизации перегруженных функций возможно 2 подхода:

1) Использовать дополнительное имя (то что после ::)

2) Скопировать условие

3) Dry run - передать функции параметры для выбора но не вызывать её.

Обобщённая ссылка

fn func(let a {a >= 0})
{
    println!("A");
}
fn func(let b {a < 0})
{
    println!("B");
}

let const f = func;
f(10);    // A
f(-100);  // B

Конкретная ссылка

fn func::a()
{}
fn func::b()
{}

let const f = ref func::a;

Первый способ.

fn func(let a {a >= 0})
{}
fn func(let b {a < 0})
{}

let const f = ref func::({>=});

Второй способ.

#import fn::dryrun;

fn func(int a {a >= 0})
{}
fn func(int a {a < 0})
{}

let const f = ref dryrun(func(10));

Третий способ.