MST

星途 面试题库

面试题:Kotlin 控制流的复杂嵌套及优化

假设有一个多层嵌套的 if - else 控制流结构,用于判断用户的权限等级,权限等级从低到高分为普通用户、会员、高级会员、管理员。普通用户只能查看基本信息,会员除查看基本信息外还能发布评论,高级会员能进行一些管理操作,管理员拥有所有权限。请用 Kotlin 代码实现这个逻辑,并思考如何优化该多层嵌套结构,使其更加清晰易读。
28.2万 热度难度
编程语言Kotlin

知识考点

AI 面试

面试题答案

一键面试

原始多层嵌套实现

fun main() {
    val userRole = "高级会员"
    if (userRole == "普通用户") {
        println("可以查看基本信息")
    } else {
        if (userRole == "会员") {
            println("可以查看基本信息,也可以发布评论")
        } else {
            if (userRole == "高级会员") {
                println("可以查看基本信息、发布评论,还能进行一些管理操作")
            } else {
                if (userRole == "管理员") {
                    println("拥有所有权限")
                } else {
                    println("未知权限等级")
                }
            }
        }
    }
}

优化后的实现(使用 when 表达式)

fun main() {
    val userRole = "高级会员"
    when (userRole) {
        "普通用户" -> println("可以查看基本信息")
        "会员" -> println("可以查看基本信息,也可以发布评论")
        "高级会员" -> println("可以查看基本信息、发布评论,还能进行一些管理操作")
        "管理员" -> println("拥有所有权限")
        else -> println("未知权限等级")
    }
}

优化说明

  1. 使用when表达式when表达式类似于其他语言中的switch - case语句,但功能更强大。它可以接受多种类型的参数,并且代码结构更加简洁。与多层嵌套的if - else相比,when表达式使得逻辑分支更加清晰,易于阅读和维护。
  2. 避免深层嵌套:多层嵌套的if - else会导致代码的缩进层次过多,使得代码的可读性变差。而when表达式将所有的条件分支并列展示,减少了嵌套深度,提高了代码的清晰度。