Tag: 副作用

错误或功能:Kotlin允许在继承中将“val”更改为“var”

我刚开始探索Kotlin语言。 我正在努力继承,var和val和副作用。 如果我声明一个具有val x的特征A并且在AImpl覆盖x ,则可以将其重写为var (参见下面的代码)。 令人惊讶的是A的print()方法受x的重新分配影响,即使x是A的值。 这是一个错误还是一个功能? 码: trait A { fun print() { println("Ax = $x") } val x : Int; } class AImpl(x : Int) : A { override var x = x; // seems like x can be overriden as `var` } fun main(args: Array<String>) { val a = AImpl(2) a.print() […]

Kotlin中的条件副作用和可选类型

我正在努力在Kotlin中执行一个简单的副作用: fun handle(request: Request) { repository.findByUID(request.userId)?.let { if (someCondition) return service.run(…) } } 正如你所看到的那样,当知识库返回一个非空值并且满足someCondition时,应该执行副作用 。 有没有Kotlin这样做的方式,而不是使用如果{} – 返回结构? 在Java 8中,可以通过以下方式来实现: optional .filter(…) .ifPresent(…)