Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
399 views
in Technique[技术] by (71.8m points)

kotlin - Using a class's properties without having to write its name down every time

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

I would like to ideally use value, left, and right without having to call expr everytime. Is that possible?

question from:https://stackoverflow.com/questions/65911935/using-a-classs-properties-without-having-to-write-its-name-down-every-time

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

That's what the with scope function is for.

fun eval(expr: Expr): Int = with (expr) {
        when (this) {
            is Num -> value
            is Sum -> left + right
        }
    }

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...