这个groovy代码出了什么问题?
嗨,我有以下Groovy代码:这个groovy代码出了什么问题?,groovy,Groovy,嗨,我有以下Groovy代码: package fp; abstract class Function { public static Closure map = { action, list -> return list.collect(action) } } 此代码取自系列。这段代码的文件名是函数与类名相同(即使在Groovy中不需要)。当我尝试以以下方式运行此代码时: groovy Function.groovy 运行时,出现以下错误: Caught: gro
package fp;
abstract class Function
{
public static Closure map = { action, list -> return list.collect(action) }
}
此代码取自系列。这段代码的文件名是函数
与类名相同(即使在Groovy中不需要)。当我尝试以以下方式运行此代码时:
groovy Function.groovy
运行时,出现以下错误:
Caught: groovy.lang.GroovyRuntimeException: This script or class could not be run.
It should either:
- have a main method,
- be a JUnit test, TestNG test or extend GroovyTestCase,
- or implement the Runnable interface.
有人能帮我解决这个问题吗?对我来说似乎很清楚 要运行Groovy脚本,解释器必须在其中找到一些直接可执行的代码
显然,您的脚本并非如此,它确实可以完美加载,但无法执行,因为其中没有语句,只有抽象类的声明。实际上,源文件只包含一个类定义。如果希望将其作为Groovy脚本运行,则必须添加一些代码来调用Function.map方法
// File: Functor.groovy
package fp
abstract class Functor {
static Closure map = { action, list -> return list.collect(action) }
}
def twelveTimes = { x -> return 12 * x }
def twelveTimesAll = Functor.map.curry(twelveTimes)
def table = twelveTimesAll([1, 2, 3, 4])
println "table: ${table}"
现在您可以执行
$groovy Functor.groovy
来运行脚本。这并不是说它有什么区别,而是IBM devel示例类是Functor,而不是Function。您希望能够直接调用抽象类吗?只需显式地遵循IBMdevel示例,您将获得可以从中学习的合理输出。祝你好运