OCaml
Vanliga fallgropar
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