fold

inline fun <R> CommandSender.fold(ifIsConsole: ConsoleCommandSender.() -> R, ifIsUser: UserCommandSender.() -> R, otherwise: CommandSender.() -> R = { error("CommandSender ${this::class.qualifiedName} is not supported") }): R

折叠 AbstractCommandSender 的可能性.

示例

// 当一个指令执行过程出错
val exception: Exception = ...

sender.fold(
ifIsConsole = { // this: ConsoleCommandSender
sendMessage(exception.stackTraceToString()) // 展示整个 stacktrace
},
ifIsUser = { // this: UserCommandSender
sendMessage(exception.message.toString()) // 只展示 Exception.message
}
)

Return

ifIsConsole, ifIsUserotherwise 执行结果.