Quelqu'un peut-il expliquer ce comportement OCAML TOLLEVEL?
# 1________________________________1;; - : int = 11
3 Réponses :
Les soulignements sont autorisés dans des nombres (et ignorés) dans OCAML. De http://www.cs.ru.nl/~Tews/htmlman-3.10.10 /lex.html#xhtoc5 : p>
Pour la commodité et la lisibilité, les caractères de soulignement (_) sont acceptés (et ignorés) dans les littéraux entier. P> blockQuote>
OK, inattendu. Mais je suppose que les gens peuvent vouloir écrire 1234567890 comme 1_234_567_890. Intéressant...
@Surikator: Je pense que c'était l'intention. Juste en dessous de l'endroit où j'ai cité, _ code> est autorisé dans les littéraux à virgule flottante également (et y ignora également).
Ce qui suit mentionne la convention lexicale pour les flotteurs et les entiers (remarquez où le caractère optionnel _ est; même 1___ fonctionne.): caml.inria.fr/pub/docs/manual-ocaml/lex.html
Il existe plusieurs langages de programmation qui acceptent le caractère de soulignement comme un caractère non significatif dans un entier. Ada, Perl, Ocaml et probablement une autre langue l'utilisent pour séparer mille, millions et milliards ... mais vous pouvez utiliser _ code> n'importe où à l'intérieur de l'entier. P>
C'est une fonctionnalité très utile pour éviter les insectes et faciliter la lecture de gros entiers: P>
1_000_000_000 code> est plus facile à lire que
100000000 code> (Avez-vous remarqué que j'ai oublié un zéro?). p>
p.s. La même chose est vraie dans Perl:
Imprimer 1 ________________________________ 1; Code>. Ruby permet également des soulignements, mais pas consécutifs