kotlin / jvm jdk8不支持代码
var buffer = StringBuffer();
var arr = arrayOf("1","2","3","4");
arr.forEach {buffer::append}
java jdk8支持的代码,
String[] b = new String[]{"c", "b"};
Arrays.stream(b).forEach(buffer::append);
答案 0 :(得分:2)
通常,如果要将方法引用(buffer::append
)传递给采用lambda的方法,则需要将其括在括号中,而不是括号中。在此特定情况下,您无法将append
方法作为方法引用传递,因为它返回StringBuilder
,而forEach
需要返回Unit
的方法。
要使代码正常工作,请使用lambda:
arr.forEach { buffer.append(it) }
答案 1 :(得分:1)
你不能复制粘贴并使用类似的Stream代码,因为它最终解析错误。由于foreach块也包含数据,您可以这样做:
<body>
<div class="background">
</div>
<div class="container">
<section class="picture">
<div class="intro">
<h1 class="hidden">Hello, I'm Jenna!</h1>
<h1 class="hidden">I make <em>websites</em>.</h1>
</div>...
</div>
</body>
forEach块不会将方法作为参数,因此执行var buffer = StringBuffer();
var arr = arrayOf("1","2","3","4");
arr.forEach{buffer.append(it)}
不会添加任何数据,因为您必须自己执行此操作