在Java中,可以使用花括号来定义具有自己作用域的代码块:
def __str__(self):
return '{} : {}'.format(Point.__str__(self), self.label)
这在科特林如何完成?
答案 0 :(得分:6)
您可以将run
用于此目的:
inline fun <R> run(block: () -> R): R
(source)
调用指定的功能块并返回其结果。
fun f() {
run {
val x = 1
// do something with x
}
// x not visible here anymore
}
这是一个内联函数(就像Kotlin中的许多其他语言构造函数一样),因此在性能方面它等效于Java代码。
{}
不起作用,因为它创建了一个lambda(它从未被实际调用,因此它什么也不做)。您可以立即调用({ foo }()
来进行创建Lambda的开销,也可以创建一个内联函数为您执行此操作-这正是run
的作用。