如何解决使用类的属性而不必每次都写下它的名字
fun eval(expr: Expr): Int =
when (expr) {
is Num -> expr.value
is Sum -> expr.left + expr.right
}
interface Expr
class Num(val value: Int) : Expr
class Sum(val left: Expr,val right: Expr) : Expr
我希望最好使用 value
、left
和 right
,而不必每次都调用 expr
。这可能吗?
解决方法
这就是 with
作用域函数的用途。
fun eval(expr: Expr): Int = with (expr) {
when (this) {
is Num -> value
is Sum -> left + right
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。