Satır İçi İşlevler (F#)
Satır içi işlevleri çağıran kodun içine doğrudan tümleşik işlevlerdir.
Tür parametreleri tarafından belirlenmi herhangi bir işlev, statik tür parametreleri kullandığınızda, satır içi olması gerekir.Bu, derleyicinin bu düzeltilebilen parametreleri yazın garanti eder.Sıradan bir genel tür parametreleri kullandığınızda, böyle bir sınırlama yoktur.
Üye sınırlamalar kullanımını etkinleştirme dışında satır içi işlev kodu en iyi duruma getirme yararlı olabilir.Ancak, satır içi işlevlerin aşırı kullanımı kodunuzu derleyici en iyi duruma getirme ve uygulaması kitaplığı işlevlerini, değişiklikleri daha az dayanıklı olması neden olabilir.Bu nedenle, diğer tüm iyileştirme teknikleri denemiş sürece satır içi işlevleri için en iyi duruma getirme kullanmaktan kaçınmanız gerekir.Satır içi işlev veya yöntem yapmak bazen performansını artırabilir, ancak bu her zaman böyle değildir.Bu nedenle, performans ölçümleri herhangi bir belirli bir işlev satır içi yapmak aslında pozitif etkisi olduğunu doğrulamak için de kullanmalısınız.
inline Değiştirici işlevler en üst düzeyde, modül düzeyinde veya sınıf yöntemi düzeyinde uygulanabilir.
Aşağıdaki kod örneği, bir satır içi işlevi en üst düzeyde, satır içi bir oluşum yöntemi ve satır içi durağan bir yöntem gösterilmektedir.
let inline increment x = x + 1
type WrapInt32() =
member inline this.incrementByOne(x) = x + 1
static member inline Increment(x) = x + 1
Varlığını inline etkiler kesmesi yazın.Satır içi işlevleri statik türde parametreler çözmüş çünkü olmayan satır içi işlevleri yapılamaz ise.Aşağıdaki kod örneği, bir servis talebi gösterir nerede inline sahip bir statik olarak çözümlenen bir tür parametresi bir işlev kullanıyorsanız yararlıdır float Dönüþtürme iþleci.
let inline printAsFloatingPoint number =
printfn "%f" (float number)
Olmadan inline değiştiricisi, tür kesmesi zorlar işlevi, belirli bir tür, bu durumda olması için int.Ancak inline değiştiricisi, işlev statik olarak çözümlenen bir tür parametresi için olayla da.İle inline aşağıdaki gibi değiştiricisi, tür olayla:
^a -> unit when ^a : (static member op_Explicit : ^a -> float)
Bu işlevi bir dönüştürme işlemini destekleyen her türlü kabul anlamına gelir float.