原諒我的新手,因爲我是新來的FP。一直在與Elixir合作,所以我標記了它。FP中的類型與OOP中的對象有何根本的不同?
當我使用Elixir的iex時,我可以使用i
檢查變量的類型。例如i "hello"
顯示我我可以使用String
模塊的功能。我可以做String.downcase "HELLO"
,這看起來好像是發送一個消息給一個返回另一個對象的對象,但是用一種不同的方式表現爲一個數學函數。 i
幫手也好像檢查一個對象的類,然後幫助我找出該對象中可用的所有方法。
我知道不變性是函數式編程的一個關鍵特性。我可以很容易地用許多面向對象的語言做不變性,但是程序員有責任。
我一直在閱讀Elixir的書籍和博客,這些書籍和博客建議我忘記我的面向對象的思維方式,從根本上思考問題。當我唯一的區別是不可變時,我只是不明白它們有什麼根本性的差異,需要改變思維方式。
類型正交於FP的原則(不變性,參考透明度等)。有功能動態類型的語言,如clojure和erlang。部分你的困惑是,一些靜態類型的OO語言*咳嗽Java * *咳嗽超載類的想法來表示命名空間,用戶定義類型等。 –