to_c下面的函数由于在使用GADTs扩展编译时出现类型错误而被拒绝,我希望将其用于此处未显示的无关代码片段.
newtype Church = Church { unC :: forall a. (a -> a) -> a -> a }
to_c :: Int -> Church
to_c 0 = let f0 f c = c in Church f0
to_c n =
let fn f c = iterate f c !! n in Church fn
Run Code Online (Sandbox Code Playgroud)
错误信息:
Couldn't match type ‘a0’ with ‘a’ because type variable ‘a’ would escape its scope
This (rigid, skolem) type variable is bound by
a type expected by the …Run Code Online (Sandbox Code Playgroud) 我正在尝试做简单的Spring MVC库
您是否知道为什么我的View有问题,当我在控制器中使用主页方法时,应该向我显示index.html,但我一直都只收到Whitelabel Error Page,而我不知道为什么:/
我的结构:[ https://i.imgur.com/5TrGGrB.png]
我的控制器:
package controller;
import model.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import service.BookService;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
@Controller
public class LiberianController{
@Autowired
private BookService bookService;
@RequestMapping(value = "/")
public String homepage() {
return "index";
}
@GetMapping(value = "/allBooks")
public ModelAndView allBooks(ModelAndView modelAndView) {
List<Book> books = bookService.getAllBooks();
modelAndView.addObject("listBooks", books);
modelAndView.setViewName("allBooks");
return modelAndView;
}
@GetMapping(value = "/addBook")
public ModelAndView newBook(ModelAndView modelAndView) {
Book book …Run Code Online (Sandbox Code Playgroud) 我正在使用以下代码在Groovy中生成随机数。我可以在Groovy Web控制台(https://groovyconsole.appspot.com/)中运行它,并且可以运行,但是当我尝试在Mule中运行它时会失败。这是我使用的代码:
log.info ">>run"
Random random = new Random()
def ranInt = random.nextInt()
def ran = Math.abs(?ranInt)?%20?0;
log.info ">>sleep counter:"+flowVars.counter+" ran: "+ran
sleep(ran)
Run Code Online (Sandbox Code Playgroud)
这是引发的异常:
由以下原因引起:org.codehaus.groovy.control.MultipleCompilationErrorsException:启动失败:Script26.groovy:9:期望EOF,找到“?” @第9行,第25列。def ran = Math.abs(?400)?%20?0; ^
1个错误
我有一个未知结构的嵌套映射,目标是遍历映射中的每个值,检查某个条件(例如null)的值,然后将其替换为其他值。如果地图结构已知,我可以看到如何做,但是这里的问题是它是未知的。
例如,这可以是传递的地图结构(或可以具有任意数量的嵌套地图):
?def map = [
a:5,
b:"r",
c:[ a1:0, b1:null ],
d:[ a2: [ a3:"", b3:99 ], b2:null ],
...
]
Run Code Online (Sandbox Code Playgroud)
通常对于一个简单的地图,可以使用this来更新值:
map.each { it.value == null ? it.value = "" : "" }
Run Code Online (Sandbox Code Playgroud)
但是,对于嵌套地图结构,此方法将不起作用。
有没有一种有效的方法来遍历未知地图的所有嵌套值以调查和更新这些值?
我有一个元素列表,我想构建一个地图,该列表中的每个元素都有一个方法调用。例如:
list = ['a', 'b', 'c']
map = list.collectEntries{[it: println(it)]}
map[b]
>>b
Run Code Online (Sandbox Code Playgroud)
由于两个问题,这不起作用:
println 分配给映射中的键时立即执行map[b] 遇到错误: groovy.lang.MissingPropertyException:
No such property: b for class: test是否可以设置这样的地图,而无需立即执行命令?怎么做到呢?
注意:我知道,我想要实现的目标听起来有点奇怪,但是我得到了一种方法,该方法将这样的映射作为参数然后运行命令,因此我没有其他选项,例如 for 循环之类的东西
我在解析以下 XML 中的属性值时遇到问题:
s='''<?xml version="1.0" encoding="UTF-8"?>
<web-ext
xmlns="http://websphere.ibm.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-web-ext_1_0.xsd"
version="1.0">
<reload-interval value="3"/>
<context-root uri="foo/bar" />
<enable-directory-browsing value="false"/>
<enable-file-serving value="true"/>
<enable-reloading value="true"/>
<enable-serving-servlets-by-class-name value="false" />
</web-ext>
'''
def contextroot
def xml = new XmlParser(false,false).parseText(s)
xml.each {
if (it.name() == "context-root")
contextroot = it.attributes().uri
}
Run Code Online (Sandbox Code Playgroud)
它给了我正确的价值。但是有没有更直接的方法呢?就像是
xml.name("context-root").uri
Run Code Online (Sandbox Code Playgroud)
不起作用。
我的代码中有如下声明:
otherParents.sort { -it.parent.lastUpdateDate.time }.each {
// ...
}
Run Code Online (Sandbox Code Playgroud)
有时lastUpdateDate会为空,并导致异常。
我怎样才能避免它,我对groovy完全陌生,我尝试了问号之类的东西
otherParents.sort { -it.parent?.lastUpdateDate?.time }.each {
// ...
}
Run Code Online (Sandbox Code Playgroud)
但这也行不通
我来自 Java 背景,是 Groovy-Spock 测试的新手。我需要将 Json 中的列表转换为列表。我无法分享确切的代码(专有),但本质上这就是正在发生的事情。
emp_test_data.json
[{
"empID":"1234",
"location":"HQ"
},
{
"empID":"5678",
"location":"Warehouse"
}]
Run Code Online (Sandbox Code Playgroud)
常规代码
List<Employee> employeeList = slurper.parse(new File("src/test/resources/data/emp_test_data.json"))
println ("After slurped") //prints
println(pickupVOList.size() //prints 2
println(pickupVOList.get(0)) //prints [empID:5678, location:HQ]
empUtil.processEmployees(employeeList)
Run Code Online (Sandbox Code Playgroud)
EmpUtil.java
public void processEmployees(List<Employee> employeeList) {
for (Employee employee: employeeList) { //THIS FAILS!
//Do some processing
}
return;
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:- java.lang.ClassCastException: groovy.json.internal.LazyMap cannot be cast to com.my.domain.Employee
我环顾四周。在 Groovy 中,必须有正确的方法将 json 转换为精确对象列表,而不是 LazyMap 列表,但我似乎找不到它。
有任何想法吗?
Groovy版本:2.4.5 JVM:1.8.0_151供应商:Oracle Corporation操作系统:Linux
我已经尝试了两个Groovy程序版本。如果程序中没有其他内容,则运行“ Example”类(例如,没有“ println“ Test”“)。
如果我有一个“ println”语句,为什么Example类不能运行?
class Example {
static void main(String[] args) {
def clos = {println "Hello World"};
clos.call();
}
}
println "Test"
Run Code Online (Sandbox Code Playgroud)
我希望上面的程序在运行时将其打印出来:
你好,世界
测试
当类外还有另一行时,为什么类不执行?
是否可以编译带有常量 @Sql 注释的常规代码?
下面的代码是简单的测试,用 Spock 编写。
@Sql(statements = ["""
INSERT INTO pracownik ($Fields.KOMPETENCJA_ID, nr_ewid)
values (1, 'A');
INSERT INTO typ_zadania (id, kod) values (1, 'KOD');
"""]
)
def "should add new qualification"() {
//test code omitted
}
Run Code Online (Sandbox Code Playgroud)
当我想运行测试方法时,我在编译时收到错误:
Groovyc:预期 ' INSERT INTO pracownik ($Fields.KOMPETENCJA_ID, nr_ewid) 值 (1, 'A'); INSERT INTOtyp_zadania(id,kod)值(1,'KOD'); 成为 @org.springframework.test.context.jdbc.Sql 中 java.lang.String 类型的内联常量`
我认为带美元符号的多行字符串被评估为 GString 对象,但语句字段是字符串数组的类型。
我可以在groovy代码中使用多行字符串中的java注释常量吗?