Modifications avec rupture dans F# 3.0
Cette rubrique décrit les modifications dans la version 3,0 du compilateur F# et du langage pour la version release Visual Studio 2012 .
Liste de modifications
Le tableau suivant répertorie les nouveautés F# 3,0.
Zone de modification importante |
Description |
---|---|
Mise en retrait |
Des mises en retrait non valide qui étaient à tort acceptées par les versions antérieures du compilateur F# génère une erreur de compilation dans la version actuelle.Pour une description complète des règles de mise en retrait, consultez Indications pour la mise en forme du code (F#). |
Quotations, méthodes, propriétés des structures qui sont des variables locales |
C´est désormais une erreur d´appeler une propriété ou une méthode de la structure dans une quotation lorsque cette structure est une variable locale.Les versions antérieures F# permettaient ce comportement.
Pour contourner cette spécification, créez une copie de la variable locale, comme le montre l'exemple suivant :
|
Equit'e pour les valeurs nulls inexact |
Dans les versions antérieures, vous pouvez comparer les valeurs NULL à l'aide de l'opérateur = qu´elles soient des valeurs appropriées ou inappropriées d'un type.une Null approprié est une valeur NULL que le type permet ; un null inexact n'est pas une valeur valide pour le type.Le comportement actuel est de lever une NullReferenceException lorsque vous essayez d'utiliser l'opérateur = pour comparer des NULLS invalides, comme l'illustre le code suivant.
|
Les commentaires et les chaînes |
Dans les versions antérieures, un jeton de commentaire fermant *) dans une chaîne triple entre guillemets (une chaîne qui utilise le """) a été analysé comme une partie d'une chaîne.Dans la version actuelle, ce jeton est analysée en tant que caractère fermeture de commentaire.Par conséquent, le code suivant, qui précédemment a été reçu, génère une erreur dans la version actuelle :
Pour plus d'informations, consultez Chaînes (F#). |
Les propriétés qui ont différents types d'accesseurs Get et d'accesseur Set. |
Dans les versions antérieures de F#, le compilateur F# autorisait de manière incorrecte l'accesseur Get et l'accesseur Set à avoir des types différents (par exemple, un accesseur Get de type int et un accesseur Set de type chaîne).Dans F# 3,0, le compilateur signale une telle déclaration comme une erreur. |