F# 4.7'deki yenilikler
F# 4.7, F# diline birden çok geliştirme ekler.
Kullanmaya başlayın
F# 4.7 tüm .NET Core dağıtımlarında ve Visual Studio araçlarında kullanılabilir. Daha fazla bilgi edinmek için F# kullanmaya başlayın.
Dil sürümü
F# 4.7 derleyicisi, proje dosyanızdaki bir özellik aracılığıyla etkili dil sürümünüzü ayarlama olanağı sunar:
<PropertyGroup>
<LangVersion>preview</LangVersion>
</PropertyGroup>
Bunu , , 4.7
latest
ve preview
değerlerine 4.6
ayarlayabilirsiniz. Varsayılan değer: latest
.
bunu olarak preview
ayarlarsanız, derleyiciniz derleyicinizde uygulanan tüm F# önizleme özelliklerini etkinleştirir.
Örtük verimler
Artık türün yield
çıkarılabildiği dizilere, listelere, dizilere veya hesaplama ifadelerine anahtar sözcüğünü uygulamanız gerekmez. Aşağıdaki örnekte, her iki ifade de F# 4.7'den önceki her giriş için deyimini gerektiriyor yield
:
let s = seq { 1; 2; 3; 4; 5 }
let daysOfWeek includeWeekend =
[
"Monday"
"Tuesday"
"Wednesday"
"Thursday"
"Friday"
if includeWeekend then
"Saturday"
"Sunday"
]
Tek yield
bir anahtar sözcük eklerseniz, diğer tüm öğeler de yield
bu anahtar sözcüklere uygulanmış olmalıdır.
Bir diziyi düzleştirme gibi bir şey yapmak için de kullanan yield!
bir ifadede kullanıldığında örtük verimler etkinleştirilmez. Bu gibi durumlarda bugün kullanmaya yield
devam etmeniz gerekir.
Joker karakter tanımlayıcıları
Sınıflar içeren F# kodunda, kendi tanımlayıcısının üye bildirimlerinde her zaman açık olması gerekir. Ancak kendi tanımlayıcısının hiçbir zaman kullanılmadığı durumlarda, adsız self-tanımlayıcıları belirtmek için çift alt çizgi kullanılması geleneksel olarak kural olmuştur. Artık tek bir alt çizgi kullanabilirsiniz:
type C() =
member _.M() = ()
Bu, döngüler için for
de geçerlidir:
for _ in 1..10 do printfn "Hello!"
Girinti gevşetmeler
F# 4.7'nin öncesinde, birincil oluşturucu ve statik üye bağımsız değişkenleri için girintileme gereksinimleri aşırı girinti gerektirirdi. Artık yalnızca tek bir girinti kapsamına ihtiyaç duyarlar:
type OffsideCheck(a:int,
b:int, c:int,
d:int) = class end
type C() =
static member M(a:int,
b:int, c:int,
d:int) = 1