Ricerca…


Usando l'operatore sbagliato

In OCaml esistono diversi operatori aritmetici per float e interi. Inoltre, questi operatori possono essere utilizzati solo su 2 float o 2 interi. Qui ci sono espressioni non valide in OCaml

1.0 + 2.0
1 + 2.0
1 +. 2
1 +. 2.0

L'espressione corretta per ciascuno di questi sono rispettivamente

1. +. 2.
float_of_int 1 +. 2.
1 + 2
float_of_int 1 +. 2.

Non c'è il casting automatico di numeri interi in float o viceversa in OCaml. Tutto è esplicito. Ecco una lista degli operatori interi e float

operazione Operatore intero Operatore Float
aggiunta a + b c +. d
Sottrazione a - b c -. d
Moltiplicazione a * b c *. c
Divisione a / b c /. d
Modulo a mod b modfloat cd
elevamento a potenza N / A c ** d

Dove a e b sono numeri interi e c e d sono float.

Dimenticando le parentesi attorno agli argomenti delle funzioni

Un errore comune è quello di dimenticare gli argomenti della funzione composta circostante con parentesi, che portano a errori di tipo.

# string_of_int 1+1;;

Error: This expression has type string but an expression was expected of type int

Questo è dovuto alla precedenza. In effetti, quanto sopra valuta

# (string_of_int 1) + 1;;

che è sbagliato. Sarebbe una sintassi corretta

# string_of_int (1+1);;

- : string = "2"


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow