这个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

嗨,我有以下Groovy代码:

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示例,您将获得可以从中学习的合理输出。祝你好运