Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
F# 4.7 aggiunge più miglioramenti al linguaggio F#.
Operazioni preliminari
F# 4.7 è disponibile in tutte le distribuzioni di .NET Core e gli strumenti di Visual Studio. Introduzione a F# per altre informazioni.
Versione del linguaggio
Il compilatore F# 4.7 introduce la possibilità di impostare la versione effettiva del linguaggio tramite una proprietà nel file di progetto:
<PropertyGroup>
<LangVersion>preview</LangVersion>
</PropertyGroup>
È possibile impostarlo sui valori 4.6, 4.7, lateste preview. Il valore predefinito è latest.
Se si imposta su preview, il compilatore attiverà tutte le funzionalità di anteprima F# implementate nel compilatore.
Rendimenti impliciti
Non è più necessario applicare la yield parola chiave in matrici, elenchi, sequenze o espressioni di calcolo in cui è possibile dedurre il tipo. Nell'esempio seguente entrambe le espressioni richiedono l'istruzione yield per ogni voce prima di F# 4.7:
let s = seq { 1; 2; 3; 4; 5 }
let daysOfWeek includeWeekend =
[
"Monday"
"Tuesday"
"Wednesday"
"Thursday"
"Friday"
if includeWeekend then
"Saturday"
"Sunday"
]
Se si introduce una singola yield parola chiave, a ogni altro elemento deve essere applicato anche yield un elemento.
I rendimenti impliciti non vengono attivati quando vengono usati in un'espressione che usa yield! anche per eseguire operazioni come appiattire una sequenza. È necessario continuare a usare yield oggi in questi casi.
Identificatori con caratteri jolly
Nel codice F# che coinvolge le classi, l'identificatore automatico deve essere sempre esplicito nelle dichiarazioni dei membri. Tuttavia, nei casi in cui l'identificatore automatico non viene mai usato, è stato tradizionalmente convenzione usare un doppio carattere di sottolineatura per indicare un self-identifier senza nome. È ora possibile usare un singolo carattere di sottolineatura:
type C() =
member _.M() = ()
Questo vale anche per for i cicli:
for _ in 1..10 do printfn "Hello!"
Riposi di rientro
Prima di F# 4.7, i requisiti di rientro per gli argomenti del costruttore primario e dei membri statici richiedevano un rientro eccessivo. Ora richiedono solo un singolo ambito di rientro:
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