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
}
-
{ a //-> …… } // 一个参数
-
{ a, b //-> …… } // 两个参数
-
{ (a, b) //-> …… } // 一个解构对
-
{ (a, b), c //-> …… } // 一个解构对以及其他参数