Sdílet prostřednictvím


Vložené funkce (F#)

Vložené funkce jsou funkce, které jsou integrovány přímo do volající kód.

Použití vložených funkcí

Při použití statického typu parametry všechny funkce, které jsou parametrizované–uživatelé parametry typu musí být vložené.Tím zajistíte, že, kompilátor může vyřešit tyto zadejte parametry.Při použití běžných obecný typ parametrů není žádné takové omezení.

Než povolíte použití omezení členských vložené funkce může být užitečné pro optimalizaci kódu.Nadměrné používání vložené funkce však může způsobit kódu méně proti změnám v kompilátoru optimalizace a provádění funkcí knihovny.Z tohoto důvodu byste se vyvarovat použití vložených funkcí pro optimalizaci, pokud jste vyzkoušeli všechny jiné techniky optimalizace.Vytvoření vložené funkce nebo metody lze někdy výkon, ale není.Pomocí měření výkonu, proto by také ověřte, zda provádět všechny vložené dané funkce ve skutečnosti pozitivní účinek.

inline Modifikátor lze použít funkce na nejvyšší úrovni, na úrovni modulu nebo na úrovni metodu ve třídě.

Následující příklad kódu ukazuje vložené funkce na nejvyšší úrovni, metodu instance vloženého a statickou metodu vložené.

let inline increment x = x + 1
type WrapInt32() =
    member inline this.incrementByOne(x) = x + 1
    static member inline Increment(x) = x + 1

Vložené funkce a odvození typu

Přítomnost inline ovlivňuje zadejte odvození.Důvodem je vložené funkce můžete staticky nevyřešil parametry typu vzhledem k tomu, že nelze bez vložené funkce.Následující příklad kódu ukazuje případ, kde inline je užitečné, protože používáte funkci, která má parametr typu staticky vyřešen, float operátor převodu.

let inline printAsFloatingPoint number =
    printfn "%f" (float number)

Bez inline , modifikátor, vynutí odvození typu funkce v tomto případě přijmout určitý typ int.Ale inline modifikátor funkce také odvodit mít parametr typu staticky vyřešen.S inline je modifikátor typ odvodit je následující:

^a -> unit when ^a : (static member op_Explicit : ^a -> float)

To znamená, že funkce přijímá libovolný typ, který podporuje převod na float.

Viz také

Referenční dokumentace

Funkce (F#)

Omezení (F#)

Statisticky vyřešené parametry typu (F#)