Jestem nowy w F #. Błądziłem i znalazłem coś interesującego, i miałem nadzieję, że ktoś może mnie oświecić, co dzieje się za kulisami.Dlaczego funkcje są powiązane z pierwszym typem są przekazywane
Tak więc wykonałem funkcję: let my_func (x, y) = x + y
.
Następnie wywołałem funkcję z argumentami 1
i 2
, podając mi 3
. Tak właśnie się spodziewałem, ale kiedy przeszedłem dwa ciągi do my_func
, dostałem błąd, mimo że +
jest prawidłowym operatorem z ciągami. Poprawiłem swój kod, ale tym razem zadzwoniłem pod numer my_func
z "cat"
i " dog"
, co dało mi "cat dog"
. Następnie próbowałem przekazać 1
i 2
z powrotem do my_func
, aby stwierdzić, że my_func
długo nie akceptuje liczb całkowitych.
Dlaczego zachowuje się w ten sposób my_func
?
let my_func (x, y) = x + y
my_func (1, 2) // produces => 3
my_func ("cat", " dog") // Error
powtórka programu ...
let my_func (x, y) = x + y
my_func ("cat", " dog") // produces => "cat dog"
my_func (1, 2) // Error
+1 wielką odpowiedź. Se także [ten artykuł Liama MCLennnana na podobnym gruncie] (http://withouttheloop.com/articles/2014-10-21-fsharp-adhoc-polymorphism/) –