Scala泛型中`=>`符号的含义解析——基于Scalaz/Cats示例
Scala泛型中
=>的用途解析 你看到的A => B是Scala的函数类型语法糖,和lambda表达式里的=>是完全不同的用法:
函数类型的
=>
在Scala类型系统里,A => B是Function1[A, B]的简写,专门用来表示「接收一个A类型参数、返回B类型结果」的函数类型。
回到你贴的代码里,ZipList[A => B]表示这个ZipList容器里装的不是普通的数值或对象,而是一批能把A转换成B的函数。和lambda里的
=>的区别
你理解的map(t => t._2(t._1))里的=>是匿名函数的定义语法——它是用来分隔「函数参数」和「函数体」的符号,属于代码执行层面的语法糖;而泛型里的A => B是类型层面的标识,用来描述一个函数的输入输出类型。结合代码逻辑理解
这个ap方法是Applicative类型类的核心方法之一,作用就是把容器里的函数批量应用到另一个容器的元素上:fa: ZipList[A]是装着A类型元素的容器f: ZipList[A => B]是装着A转B函数的容器- 代码里的
fa.value zip f.value把两个容器的元素一一配对,然后map里的匿名函数把每一对里的函数(t._2)应用到对应的元素(t._1)上,最后把结果重新打包成ZipList[B]。
内容的提问来源于stack exchange,提问作者Leif Andersen
相关产品推荐
相关产品推荐

