此代码基本上按降序对数组进行排序:
val arrayList = arrayListOf(1, 5, 2)
Collections.sort(arrayList, object : Comparator<Int> {
override fun compare(x : Int, y: Int) = y - x
})
Run Code Online (Sandbox Code Playgroud)
世界上如何将比较方法与y - x
作品重叠?科特林怎么知道是什么y - x
意思把y
之前x
如果y < x
?
我尝试使用管道、叉子和 dup 在我的程序中执行 md5sume 命令。我发现总和代码运行成功,但我无法理解某些代码行。这是我的代码:
int infp, outfp;
char buf[128];
if (popen2("md5sum", &infp, &outfp) <= 0)
{
printf("Unable to exec sort\n");
exit(1);
}
write(infp, "hello\n", 2);
close(infp);
*buf = '\0';
read(outfp, buf, 128);
printf("buf = '%s'\n", buf);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
int p_stdin[2], p_stdout[2];
pid_t pid;
if (pipe(p_stdin) != 0 || pipe(p_stdout) != 0)
return -1;
pid = fork();
if (pid < 0)
return pid;
if (pid == 0)
{
close(p_stdin[WRITE]);
dup2(p_stdin[READ], READ);
close(p_stdout[READ]);
dup2(p_stdout[WRITE], WRITE);
execl("/bin/sh", "sh", "-c", command, NULL); …
Run Code Online (Sandbox Code Playgroud) 我理解执行者的概念,但我在理解kotlin中的执行者时遇到了一些麻烦.也许它的语法无济于事.
我们来看下面的例子:
private class AlwaysCallback(private val executor: (() -> Unit) -> Unit,
private val cb: Progress.() -> Unit) : Callback {
override fun execute(progress: Progress) {
executor {
progress.cb()
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,遗嘱执行人( () -> Unit ) -> Unit
是关闭的船只.要执行的代码块.我不确定这是否属实,或者它只是一个匿名函数的容器.
另一件事是,有人可以解释语法:( () -> Unit ) -> Unit
?
我已经阅读了kotlin文档,阅读kotlin源代码并试图谷歌它但我真的很难理解这一点.谢谢