speakerRecognition.recognition(value.payload.result, Consumer { name: String ->
honorific.put(value.payload.speaker_id, name)
Log.i(TAG, "说话人识别:" + value.payload.speaker_id + " " + name)
})
// 定义带返回值的回调函数类型
fun processData(input: String, callback: (String) -> String) {
val result = callback(input) // 执行回调并获取返回值
println("处理后的结果:$result")
}
// 使用
fun main() {
processData("hello") { input ->
input.uppercase() // 回调返回大写后的字符串
}
// 输出:处理后的结果:HELLO
}
// 1. 定义无返回值的回调接口
interface OnStatusListener {
fun onStart() // 开始时回调(无返回值)
fun onProgress(percent: Int) // 进度回调(有参数,无返回值)
fun onFinish() // 结束时回调(无返回值)
}
// 2. 实现回调发送者
class Downloader {
private var listener: OnStatusListener? = null
fun setOnStatusListener(l: OnStatusListener) {
listener = l
}
fun startDownload() {
listener?.onStart() // 触发开始回调
// 模拟下载进度
for (i in 1..100 step 20) {
Thread.sleep(500)
listener?.onProgress(i) // 触发进度回调(无返回值)
}
listener?.onFinish() // 触发结束回调
}
}
// 3. 使用回调
fun main() {
val downloader = Downloader()
downloader.setOnStatusListener(object : OnStatusListener {
override fun onStart() {
println("下载开始") // 无返回值,仅执行逻辑
}
override fun onProgress(percent: Int) {
println("下载进度:$percent%") // 无返回值
}
override fun onFinish() {
println("下载完成") // 无返回值
}
})
downloader.startDownload()
}