小编aag*_*ora的帖子

是否可以在Scala中打印函数的定义

我想知道我们是否可以在Scala中打印函数的定义.函数在Scala中被视为对象.

例如:

scala> val splitFunction =(value:String)=> {value.split("")}

splitFunction: String => Array[String] = <function1>
Run Code Online (Sandbox Code Playgroud)

上面,Scala交互式shell指示splitFunction具有输入参数String并且它返回字符串数组.真正的功能1在这里表示什么?

是否可以打印或检索splitFunction的定义?

我们可以在python中实现相同的功能: 是否可以在Python中将函数作为字符串打印?

更新: 在Apache Spark中,RDD沿袭或DAG在每个阶段存储有关父RDD和转换的信息.我感兴趣的是获取函数的定义(甚至是lambda或匿名函数),用作转换(如flatMap或map)的参数.

例如:File - DebugTest.scala

val dataRDD = sc.textFile( "README.md" )
val splitFunction = (value : String) => {value.split(" ")}
val mapRDD = dataRDD.map(splitFunction )

println(mapRDD.toDebugString)
Run Code Online (Sandbox Code Playgroud)

输出:

(1) MapPartitionsRDD[2] at map at DebugTest.scala:43 []
 |  README.md MapPartitionsRDD[1] at textFile at DebugTest.scala:41 []
 |  README.md HadoopRDD[0] at textFile at DebugTest.scala:41 []
Run Code Online (Sandbox Code Playgroud)

从上面的输出中,我可以理解执行了哪些转换,但无法理解或检索在"map"转换中用作参数的splitFunction的定义.有没有办法检索或打印它?

oop scala user-defined-functions scala-collections apache-spark

5
推荐指数
1
解决办法
1130
查看次数