根据定义,lambda表达式/语句如果不突变状态,则为纯函数,否则为不纯函数。状态一表示它在其上下文/封闭环境中接收到的参数或数据。
lambda表达式/语句可能不会产生结果。那不应该干扰它的功能纯度。
因此,有人可能会认为以下类别(不纯的mutate参数)
x -> x + 1
)(StringBuilder sb) -> {sb.append("impure and proud of it"); return -3;}
)x -> {}
)(StringBuilder sb) -> sb.append("abc")
)如何确定以下lambda的函数纯度:
x -> System.out.println(x)
x -> Util.writeToDb(x)
(考虑writeToDb(int x)
,该方法采用int
或String
作为参数,使用jdbc连接到db,将参数插入就绪表中并关闭连接。)当然,在两种情况下,宇宙的状态都会随着调用而改变。但是从形式上来讲,国家领域在哪里结束?