我正试图在Kotlin中创建一个类型安全的groovy式构建器,就像这里描述的那样.问题是嵌套lambda中lambda接收器的可见性.这是一个简单的例子.
html {
head(id = "head1")
body() {
head(id = "head2")
}
}
Run Code Online (Sandbox Code Playgroud)
嵌套lambda的接收者是没有'head'方法的Body.然而,这段代码编译并打印成:
<html>
<head id="head1"></head>
<head id="head2"></head>
<body></body>
</html>
Run Code Online (Sandbox Code Playgroud)
这是预期的但有没有办法在内部头部获得编译错误?
我正在用kotlin开发一些日志分析工具.我有大量的传入日志,因此无法将它们全部加载到内存中,我需要以"管道"方式处理它们.我发现有两件事令我失望:
filter,map等)不懒惰.例如,我有1 GB的日志,并希望获得与给定正则表达式匹配的前十行的长度.如果按原样编写,过滤和转换将应用于内存中的整个千兆字节的字符串.l.stream(),我定义为val l = ArrayList<String>().编译器说:"未解决的参考:流".所以问题是:你是否会使收集功能变得懒惰?为什么我不能访问该stream()方法?