在書「Scala中函數編程」的,它給出了關於副作用一些實例中,如:如果它從外部讀取一些數據而不是參數,它是一個純函數嗎?
- 修改可變
- 修改數據結構代替
- 上設置一個字段對象
- 拋出異常或停止,並顯示錯誤打印到控制檯或讀取用戶輸入
- 讀取或寫入到一個文件中
- 借鑑了SC reen
我的問題是,正在讀取來自外部的一些數據比參數使得函數不純嗎?
例如
val name = "Scala"
def upcase() = name.toUpperCase
upcase
函數是純函數還是不是純函數?
編輯:按這樣的回答:https://stackoverflow.com/a/31377452/342235,我的「功能」是不實際的功能,這是一個方法,所以我給它的功能版本,並問同樣的問題:
val name = "Scala"
val upcase:() => String =() => name.toUpperCase
因爲'name'本身是不可變的和'所有呼叫upcase'返回相同的輸出,'高清upcase'是純粹的。沒有變量被修改,一個新的不可變對象被創建並返回。 – 757071
重要的是功能,而不是表達方式。 –