FunctionMeta is library providing useful macros that can be used to retrieve metadata of the function.
To use functionmeta in your project add dependency to your build.sbt:
libraryDependencies += "com.github.katlasik" %% "functionmeta" % "0.4.0" % "provided"
You can use functionName to retrieve the name of the function.
For example:
import io.functionmeta._
def func() {
println(s"Name of the function is $functionName")
}Executing function func will print:
Name of the function is func
You can use arguments to retrieve values of all parameters passed to function as
List[Any]. For example, if we use arguments inside function func:
import io.functionmeta._
def func(s: String, i: Int, d: Double, b: Boolean) {
println(s"Values ${arguments.mkString(", ")} were passed to function")
}and then we execute func with parameters like:
func("str", 10, 5.5, true)then the following will be printed to console:
Values str, 10, 5.5, true were passed to function
Finally, you can use argumentsMap to retrieve names of parameters with values as Map[String, Any].
For example, if we use argumentsMap inside function func like:
import io.functionmeta._
def func(s: String, i: Int, d: Double, b: Boolean) {
argumentsMap.foreach {
case (k,v) => println(s"$k: $v")
}
}then when we execute it with parameters like:
func("str", 10, 5.5, true)then the following lines will be printed to console:
s: str
i: 10
d: 5.5
b: true