您好我有以下Groovy代码:
package fp;
abstract class Function
{
public static Closure map = { action, list -> return list.collect(action) }
}
此代码取自Groovy IBM developer works系列。此代码的文件名与类名称Function
相同(即使在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.
任何人都可以帮我解决这个问题吗?
答案 0 :(得分:4)
对我来说似乎很清楚。
要运行Groovy脚本,解释器必须在其中找到一些可直接执行的代码。
显然不是你的脚本的情况,它确实加载完美,但不能执行,因为它没有语句,只有抽象类的声明。
答案 1 :(得分:2)
确实源文件只包含类定义。如果要将其作为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
来运行脚本。