Skip to content

Latest commit

 

History

History
71 lines (53 loc) · 2.03 KB

解构声明.md

File metadata and controls

71 lines (53 loc) · 2.03 KB

解构声明

解构声明

从函数中返回两个变量


class Main2Activity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main2)
        var (province,city) = getData(2)
        Toast.makeText(this,province+"-"+city,Toast.LENGTH_LONG).show()
    }
}

fun getData(id:Int):Pair<String,String>{
    if (id < 5) {
        return "湖北" to "武汉"
    }else{
        return "广东" to "深圳"
    }
}

  • 关于Pair和Triple的还有很多用法,需要自己慢慢体会,下面结合rxjava+Retrofit看看

class Main2Activity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main2)
        
        val a = requestType(1)//网络请求 书的类型 结合Retrofit
        val b = requestName(2)//网络请求 书的名字 结合Retrofit
        Observable.zip(a, b, object : BiFunction<Int, String, Pair<String, String>> {
            override fun apply(t1: Int, t2: String): Pair<String, String> {
                return Pair("type", "name") //把数据整合到一起然后 通知观察者(订阅着)
            }
        }).subscribe(
                { var (type, name) = it },
                { Toast.makeText(this@Main2Activity,"onError"+ it.message,Toast.LENGTH_LONG).show() },
                { Toast.makeText(this@Main2Activity,"onComplete",Toast.LENGTH_LONG).show() })
    }
}
//结合Retrofit 我就不细写了
fun requestType(a:Int):Observable<Int>{
    val a = Observable.just(1)
    return a
}
fun requestName(a:Int):Observable<String>{
    val a = Observable.just("2")
    return a
}

在 lambda 表达式中解构

  • { a //-> …… } // 一个参数

  • { a, b //-> …… } // 两个参数

  • { (a, b) //-> …… } // 一个解构对

  • { (a, b), c //-> …… } // 一个解构对以及其他参数