public static Func<string, Task<T>> MyMethod<T>(
UserCredentials credentials,
Func<string, string, string, Task<T>> func
) =>
async (value) => await func(credentials.user, credentials.pwd, value);我很难分辨函数的纯度,因为很明显,T(int)会产生与T(string)不同的输出。还是纯度取决于T(int) = 5总是导致10,而T(string) = "Foo“总是导致"Bar"?
发布于 2018-02-23 17:57:25
还是纯度取决于T(int) =5总是导致10,而T(string) = "Foo“总是导致"Bar"?
是。
类型参数仍然是函数的输入参数之一,即使它不驻留在函数的括号内。纯函数的定义是,给定输入参数的相同值,它仍然会产生相同的结果(没有任何副作用)。
发布于 2018-02-23 18:00:20
使用维基百科的纯功能的定义,一个函数是纯的,如果:
我认为有两种方法可以这样看: 1.类型参数T是函数定义的一部分,或者是函数输入的一部分。不管是哪种方式,我都不认为在确定函数是否是纯函数时很重要。
https://softwareengineering.stackexchange.com/questions/366455
复制相似问题