Sök…


Använd fel operatör

I OCaml finns det olika aritmetiska operatörer för flottörer och heltal. Dessutom kan dessa operatörer bara användas på två flottörer eller två heltal. Här är ogiltiga uttryck i OCaml

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

Rätt uttryck för var och en av dessa är

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

Det finns ingen automatisk gjutning av heltal till flottörer eller vice versa i OCaml. Allt är tydligt. Här är en lista över heltal och floatoperatörer

Drift Heltalsoperatör Float Operator
Tillägg a + b c +. d
Subtraktion a - b c -. d
Multiplikation a * b c *. c
Division a / b c /. d
modul a mod b modfloat cd
exponentiering N / a c ** d

Där a och b är heltal och c och d är flottörer.

Glömmer parenteser kring funktionsargument

Ett vanligt misstag är att glömma omgivande funktionsargument med parenteser, vilket leder till typfel.

# string_of_int 1+1;;

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

Detta beror på förekomsten. I själva verket utvärderar ovanstående till

# (string_of_int 1) + 1;;

vilket är fel. En korrekt syntax skulle vara

# string_of_int (1+1);;

- : string = "2"


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow