Szukaj…


Używanie niewłaściwego operatora

W OCaml istnieją różne operatory arytmetyczne dla liczb zmiennoprzecinkowych i liczb całkowitych. Dodatkowo, operatory te mogą być używane tylko na 2 liczbach zmiennoprzecinkowych lub 2 liczbach całkowitych. Oto nieprawidłowe wyrażenia w OCaml

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

Prawidłowe wyrażenie dla każdego z nich to odpowiednio

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

W OCaml nie ma automatycznego rzucania liczb całkowitych na zmiennoprzecinkowe lub odwrotnie. Wszystko jest jednoznaczne. Oto lista operatorów liczb całkowitych i zmiennoprzecinkowych

Operacja Operator liczb całkowitych Operator pływaka
Dodanie a + b c +. d
Odejmowanie a - b c -. d
Mnożenie a * b c *. c
Podział a / b c /. d
Moduł a mod b modfloat cd
Potęgowanie Nie dotyczy c ** d

Gdzie i a b są liczbami całkowitymi i c i d są pływaki.

Zapominanie nawiasów wokół argumentów funkcji

Częstym błędem jest zapominanie o otaczających argumentach funkcji złożonej z nawiasami, co prowadzi do błędów pisowni.

# string_of_int 1+1;;

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

Wynika to z pierwszeństwa. W rzeczywistości powyższe ocenia do

# (string_of_int 1) + 1;;

co jest złe. Poprawna składnia byłaby

# string_of_int (1+1);;

- : string = "2"


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow