scala - 函数有什么类型?

标签 scala implicit-conversion

我错过了haskell 方便的操作符$,所以我决定介绍一个。

class Applayable[-R,T] (val host : Function[R,T]) {
  def $: R=>T = host.apply
}
implicit def mkApplayable[R,T] (k : Function[R,T]) : Applayable[R,T] = new Applayable(k)

它完全适用于
val inc : Int => Int = _ + 1
inc $ 1

但失败了
def inc(x:Int) : Int = x+1
inc $ 1

我应该为隐式转换指定什么类型以将 def 定义转换为 Applayable 实例?

最佳答案

你不能指定一个类型来做你想做的事:方法不是函数。您可以通过在其后附加神奇的下划线将方法转换为(可能是部分应用的)函数,如下所示:

def inc(x:Int) : Int = x+1
(inc _) $ 1

关于scala - 函数有什么类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7002356/

相关文章:

Scala 滥用隐式转换

oop - 为什么 Seq[V] 不扩展 Map[Int,V] 也不 Set[V] 扩展 Map[V,Bool]?

postgresql - 斯卡拉玩! Postgres 连接失败

scala - 在Scala中调用Kotlin的重载方法

mysql - docker.io - 应用程序和数据库容器之间的 Docker 链接

c++ - char 枚举中的值分配不正确

scala - 如何避免使用错误数据版本的错误?

c++ - C++中不同数据类型之间的转换

javascript - AngularJS 将字符串转换为引用 $scope 中对象的对象/数组

c# - 带有隐式转换运算符的运行时 InvalidCastException