审查生成的支付状态层级

来自 密封类与密封接口
Kotlin 2.4.10 高级 6分钟 找出 4处问题

在这段生成的支付状态代码成为公开应用模型前审查它。

保持状态层级封闭,生成不含秘密的公开状态,并且只重试网络失败。

kotlin
sealed interface PaymentState
data object Idle : PaymentState
data object Processing : PaymentState
data class Paid(val receiptId: String, val paymentToken: String) : PaymentState
open class Failed(val message: String) : PaymentState
class NetworkFailed(message: String) : Failed(message)

fun render(state: PaymentState): String {
    return when (state) {
        Idle -> "idle"
        Processing -> "processing"
        is Paid -> "paid ${state.receiptId} with ${state.paymentToken}"
        else -> "failed"
    }
}

fun shouldRetry(state: PaymentState): Boolean =
    state::class.simpleName?.contains("Network") == true

fun main() {
    val state = Paid("R-9", "tok_live_123")
    println(render(state))
}

生成代码仅作示例,不代表任何特定模型

在试验场中打开
报告错误