IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 什么叫Kotlin元组(Pair & Triple) -> 正文阅读

[移动开发]什么叫Kotlin元组(Pair & Triple)

在之前的学习中通常我们对变量赋值时,只带一个值,比如:

  val name = "jack"

比如我们有时候处理一些复杂情况的话,就只能进行分割处理,比如表述学生的 姓名、性别、年龄,就需要用到对象了。

此处我们以Java为例,有的场合我们需要使用学生的(姓名 性别 年龄),有的时候只需要使用(姓名 性别)再或者只使用(姓名 年龄)。可以使用如下处理方案(使用了部分面向对象的知识,不懂也没关系,后续课程里也会介绍)

public class Student {
    private String name;
    private String sex;
    private int age;
 
    //构造方法,包含姓名、性别、年龄
    public Student(String name, String sex, int age) {
        this.name = name;
        this.sex = sex;
        this.age = age;
    }
 
    //构造方法,包含姓名、年龄
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
 
    //构造方法,包含姓名、性别
    public Student(String name, String sex) {
        this.name = name;
        this.sex = sex;
    }
 
    public String getName() {
        return name;
    }
 
    public String getSex() {
        return sex;
    }
 
    public int getAge() {
        return age;
    }
}
 
public class Person {
    public static void main(String[] args) {
        Student student = new Student("Alfred","男",29);
        System.out.println(student.getName());
        System.out.println(student.getSex());
        System.out.println(student.getAge());
 
        Student student1 = new Student("Thomas",21);
        System.out.println(student1.getName());
        System.out.println(student1.getAge());
 
        Student student2 = new Student("Jack","男");
        System.out.println(student2.getName());
        System.out.println(student2.getSex());
    }
}

结果:

Alfred
男
29
Thomas
21
Jack
男

这个就是常规解决方案,但是在简单的使用场合有必要这么复杂吗?下面就来看看元组

元组
可以把多个值同时赋给一个变量,或者同时给多个变量赋值。kotlin中元组分为二元元组(Pair)和三元元组(Triple),在新版Kotlin中已经删除了多元元组。也就是只有Pair和Triple。

先来看看API。

/**
 * Represents a triad of values
 *
 * There is no meaning attached to values in this class, it can be used for any purpose.
 * Triple exhibits value semantics, i.e. two triples are equal if all three components are equal.
 * An example of decomposing it into values:
 * @sample samples.misc.Tuples.tripleDestructuring
 *
 * @param A type of the first value.
 * @param B type of the second value.
 * @param C type of the third value.
 * @property first First value.
 * @property second Second value.
 * @property third Third value.
 */
public data class Triple<out A, out B, out C>(
    public val first: A,
    public val second: B,
    public val third: C
) : Serializable {
 
    /**
     * Returns string representation of the [Triple] including its [first], [second] and [third] values.
     */
    public override fun toString(): String = "($first, $second, $third)"
}
 
/**
 * Represents a generic pair of two values.
 *
 * There is no meaning attached to values in this class, it can be used for any purpose.
 * Pair exhibits value semantics, i.e. two pairs are equal if both components are equal.
 *
 * An example of decomposing it into values:
 * @sample samples.misc.Tuples.pairDestructuring
 *
 * @param A type of the first value.
 * @param B type of the second value.
 * @property first First value.
 * @property second Second value.
 * @constructor Creates a new instance of Pair.
 */
public data class Pair<out A, out B>(
    public val first: A,
    public val second: B
) : Serializable {
 
    /**
     * Returns string representation of the [Pair] including its [first] and [second] values.
     */
    public override fun toString(): String = "($first, $second)"
}

很简单不做过多的解释,直接看例子就明白了。

fun main() {
    val student1 = Triple<String, String, Int>("Alfred", "男", 29)
    val student2 = Pair<String,Int>("Thomas",21)
    val student3 = Pair<String,String>("jack","男")
    println(student1.first)
    println(student1.second)
    println(student1.third)
    println(student2.first)
    println(student2.second)
    println(student3.first)
    println(student3.second)
}

}
结果:

Alfred
男
29
Thomas
21
jack
男

看看激动不,实现结果跟Java面向对象实现结果一致。

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-03-11 22:21:45  更:2022-03-11 22:22:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 18:47:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码