- Reactive Programming in Kotlin
- Rivu Chakraborty
- 298字
- 2021-07-02 22:26:38
Pure function
The definition of pure function says that if the return value of a function is completely dependent on its arguments/parameters, then this function may be referred to as a pure function. So, if we declare a function as fun func1(x:Int):Int, then its return value will be strictly dependent on its argument x; say, if you call func1 with a value of 3 twice, then, for both the times, its return value will be the same. A pure function can be a lambda or a named function as well. In the previous example, the first lambda expression was a pure function but not the second one, as for the second one, its return value can be different at different times with the same value passed to it. Let's look at the following example to understand it better:
fun square(n:Int):Int {//(1) return n*n } fun main(args: Array<String>) { println("named pure func square = ${square(3)}") val qube = {n:Int -> n*n*n}//(2) println("lambda pure func qube = ${qube(3)}") }
Both the functions, (1) and (2), here are pure functions–one is named, while the other is lambda. If you pass the value 3 to any of the functions n times, their return value will be the same for each time. Pure functions don't have side effects.
Side effects: A function or expression is said to have a side effect if it modifies some state outside its scope or has an observable interaction with its calling functions or the outside world besides returning a value.
Source–Wikipedia https://en.wikipedia.org/wiki/Side_effect_(computer_science).
It is to note that, as we said earlier, pure functions have nothing to do with lambda expressions, their definitions are completely different.
The following is the output:
named pure func square = 9 lambda pure func qube = 27
- Hands-On Data Structures and Algorithms with Rust
- Python絕技:運用Python成為頂級數據工程師
- Architects of Intelligence
- App+軟件+游戲+網站界面設計教程
- 商業分析思維與實踐:用數據分析解決商業問題
- 數據結構與算法(C語言版)
- The Game Jam Survival Guide
- 智能數據時代:企業大數據戰略與實戰
- MATLAB Graphics and Data Visualization Cookbook
- 高維數據分析預處理技術
- Hadoop大數據開發案例教程與項目實戰(在線實驗+在線自測)
- 實用數據結構
- 數據指標體系:構建方法與應用實踐
- 標簽類目體系:面向業務的數據資產設計方法論
- Access 2010數據庫應用技術教程(第二版)