Sono nuovo su F #. Stavo scherzando e ho trovato qualcosa di interessante e speravo che qualcuno potesse illuminarmi su cosa sta succedendo dietro lo scenario.Perché vengono passate le funzioni al primo tipo.
Così ho fatto la funzione: let my_func (x, y) = x + y
.
Quindi ho chiamato la funzione con gli args 1
e 2
assegnandomi 3
. Questo è quello che mi aspettavo che succedesse, ma quando ho passato due stringhe a my_func
ho ricevuto un errore anche se +
è un operatore valido con stringhe. Riesero a riattivare il mio codice ma stavolta solo chiamando my_func
con "cat"
e " dog"
che mi ha dato "cat dog"
. Ho quindi provato a passare 1
e 2
di nuovo a my_func
solo per scoprire che my_func
non accetta più numeri interi.
Perché my_func
si comporta in questo modo?
let my_func (x, y) = x + y
my_func (1, 2) // produces => 3
my_func ("cat", " dog") // Error
programma replica ...
let my_func (x, y) = x + y
my_func ("cat", " dog") // produces => "cat dog"
my_func (1, 2) // Error
+1 grande risposta. Se anche [questo articolo di Liam MCLennnan copre un terreno simile] (http://withouttheloop.com/articles/2014-10-21-fsharp-adhoc-polymorphism/) –