代码之家  ›  专栏  ›  技术社区  ›  Brian Dilley

有没有一种更优雅的方法来用Kotlin写这个getter?

  •  0
  • Brian Dilley  · 技术社区  · 6 年前

    科特林新手-好奇是否有更优雅的方式来写 duration 以下类的getter(或任何其他样式提示或gotchas):

    open class Timeline(
        open var props: MutableList<Prop> = mutableListOf()) {
    
        val duration: Long
            get() {
                var best: Prop? = null
                props.forEach {
                    if (best == null || it.interval.end > best?.interval!!.end) {
                        best = it
                    }
                }
                return best?.interval?.end ?: 0L
            }
    }
    

    从本质上说,它只是找到了最大间隔的道具。我知道我可以确保 props List 在向其中添加项目时进行排序,只需抓住列表末尾的项目,但这不是问题所在。

    1 回复  |  直到 6 年前
        1
  •  3
  •   Todd    6 年前

    end ,您可以在一行中执行此操作:

    val duration: Long = 
        props.map { it.interval.end }.max() ?: 0L
    

    Prop 到它的 interval.end

    如果你想要 最高的 间隔.end ,你可以这样写:

    val bestProp: Prop? = 
        props.maxBy { it.interval.end }
    

    最大值 间隔.end