scala – 在println()中打印出函数的名称?
发布时间:2020-12-16 18:53:18 所属栏目:安全 来源:网络整理
导读:我有一系列的功能.如何在println()函数中获取要打印的名称?在下面的代码中我得到这个输出: 函数2 ??函数2 ??函数2 假设在我的真实代码中,我有更多具有更多描述性名称的函数. def printNames() { def f1(x: Int,y: Int): Int = x + y def f2(x: Int,y: Int)
我有一系列的功能.如何在println()函数中获取要打印的名称?在下面的代码中我得到这个输出:
<函数2> 假设在我的真实代码中,我有更多具有更多描述性名称的函数. def printNames() { def f1(x: Int,y: Int): Int = x + y def f2(x: Int,y: Int): Int = x - y def f3(x: Int,y: Int): Int = x * y val fnList = Array(f1 _,f2 _,f3 _) for (f <- fnList) { println(f.toString()); } } 解决方法
Scala中的函数不具有描述性名称,只有Ints或Lists具有描述性名称;你可以为toString提供一个表示其值的表示,但这不是一个名字.
但是,您可以扩展Function2: object f1 extends Function2[Int,Int,Int] { def apply(a: Int,b: Int) = a + b override def toString = "f1" } 这将按你的意愿行事. 或者更一般地说 class NamedFunction2[T1,T2,R](name: String,f: Function2[T1,R]) extends Function2[T1,R] { def apply(a: T1,b: T2): R = f.apply(a,b) override def toString = name } 然后用作 val f1 = new NamedFunction2[Int,Int]("f1",_ + _) 等等 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |