ce code F Tenir compte # pour résumer les chiffres ci-dessous i
multiples de 3 et 5:Y a-t-il des astuces pour effectuer des conversions implicites en F #?
let isMultipleOfThreeOrFive n =
(n % 3 = 0) || (n % 5 = 0)
let sequenceOfMultiples i =
seq {1 .. i - 1} |> Seq.filter isMultipleOfThreeOrFive
Depuis i
est un int
, vous débordez si i
est grande. Cette version avec BigInteger
prend en charge que:
let isMultipleOfThreeOrFive n =
(n % 3I = 0I) || (n % 5I = 0I)
let sequenceOfMultiples (i : System.Numerics.BigInteger) =
seq {1I .. i - 1I} |> Seq.filter isMultipleOfThreeOrFive
Pour convertir la version int
à la version BigInteger
, je devais ajouter beaucoup de I
s après les chiffres. C'est parce que F # ne fait pas de conversions implicites.
Y a-t-il un moyen facile de contourner ce problème, ou était d'ajouter I
s dans 6 endroits la meilleure chose à faire?
ce n'est pas un bug, il est une fonctionnalité ;-) –