首页 > 解决方案 > def compose[A,B,C](f: B => C, g: A => B): A => C = {f(g(_))} 是不是有效的 scala 声明?

问题描述

我是 scala 的新手,这可能是一个蛋糕步行概念,但试图理解为什么

def compose[A,B,C](f: B => C, g: A => B): A => C = {f(g(_))}

是不是有效的scala declaration?

标签: scala

解决方案


尝试

def compose[A,B,C](f: B => C, g: A => B): A => C = { a: A => f(g(a)) }

下划线作为占位符语法的工作方式不一致,特别是在嵌套函数调用中不像你在这里那样工作。一个好的经验法则是,如果下划线语法出错,请尝试将其扩展为显式 lambda,然后查看它是否有效。


推荐阅读