我有一个Groovy文件包含一堆简单的函数,如下所示:
// useful functions
def myFunc1(String arg) {
println("Hello " + arg)
}
def myFunc2(String arg) {
println("Goodbye " + arg)
}
Run Code Online (Sandbox Code Playgroud)
我想从中得到:
(所有这些都是简单的字符串,我不需要运行任何东西.)
我正准备使用一些Regexing,但由于我使用的是JVM语言(Scala),我想我可以使用一些Groovy编译器的东西来做这个"更好"的方式.
似乎有很多关于动态加载Groovy代码并运行它的信息,但在内省源代码方面却没有那么多.有任何想法吗?
(以"不错"的方式失败,我也会接受一些Scala-foo以简洁的方式解析信息.)
我正在使用play框架开发REST API.我想为我的所有操作实现集中的错误处理.
实现这一目标的最佳方法是什么?
我的Application
控制器中有以下代码:
def index = Action {
var ticketsAvailable = 1
Ok(views.html.index)
}
Run Code Online (Sandbox Code Playgroud)
当我尝试运行该应用程序时,我收到此编译错误:
Cannot write an instance of views.html.index.type to HTTP response. Try to define a Writeable[views.html.index.type]
Run Code Online (Sandbox Code Playgroud)
在线上
Ok(views.html.index)
Run Code Online (Sandbox Code Playgroud)
但是,当我添加括号(如下所示)时,错误消失:
Ok(views.html.index())
Run Code Online (Sandbox Code Playgroud)
这是为什么?我认为,在Scala中,当没有参数时,括号的用法是可选的.
因为我是受虐狂我正试图在C中写一些东西来解码一个8位的PNG文件(这是一个学习的东西,我不是要重新发明libpng ......)
我已经到了这一点,当我放气的,未经过滤的数据缓冲区中的东西明显地类似于源图像(见下文),但它仍然非常,错误,错误,而且我很确定我的实现方式有些歪斜过滤算法.他们中的大多数都很简单,但在文档中有一件我不理解的重要事情,就是不擅长数学或者没有参加过comp-sci课程:
使用无符号算术模256,因此输入和输出都适合字节.
这是什么意思?
如果有人能告诉我,我会非常感激!
作为参考,(我为蹩脚的C道歉)我在文档中描述的过滤算法的点头实现如下:
unsigned char paeth_predictor (unsigned char a, unsigned char b, unsigned char c) {
// a = left, b = above, c = upper left
char p = a + b - c; // initial estimate
char pa = abs(p - a); // distances to a, b, c
char pb = abs(p - b);
char pc = abs(p - c);
// return nearest of a,b,c,
// …
Run Code Online (Sandbox Code Playgroud)