zoukankan      html  css  js  c++  java
  • scala之旅-核心语言特性【元组】(八)

    在Scala中,元组是一个包含了固定数量的元素的值,且每个元素都有自己的类型。元组是不可变的。

    元组特别适用于一个方法返回多个值的场景。

    一个二元元组可以按如下方式创建:

    val ingredient = ("Sugar" , 25)

    这个元组包含了一个 String 类型的元素和一个 Int 类型的元素。

    这表示 ingredient的类型是 (String, Int) ,是 Tuple2[String, Int] 的简写。

    为了表示元组,Scala中采用了一系列的类:Tuple2Tuple3等,通过Tuple22每个类具有与元素一样多的类型参数。

    获取元组元素内容

    一种方式访问元组元素内容是通过元素的下标。各个元素的获取可以通过 _1_2 等

    println(ingredient._1) // Sugar
    println(ingredient._2) // 25

    元组中的模式匹配

    元组也可以通过模式匹配进行拆分

    val (name, quantity) = ingredient
    println(name) // Sugar
    println(quantity) // 25

    这里的 name 推断的类型是 String ,quantity 推断的类型是 Int。

    下面是另一个模式匹配的案例:

    val planets =
      List(("Mercury", 57.9), ("Venus", 108.2), ("Earth", 149.6),
           ("Mars", 227.9), ("Jupiter", 778.3))
    planets.foreach{
      case ("Earth", distance) =>
        println(s"Our planet is $distance million kilometers from the sun")
      case _ =>
    }

    或者用for 解析:

    val numPairs = List((2, 5), (3, -7), (20, 56))
    for ((a, b) <- numPairs) {
      println(a * b)
    }

    元组和case类

    用户有的时候可能发现很难在case类和元组中去做一个选择。case 类是有命名的元素。这些命名可以在有些代码上增加可读性。在上面的例子中,相对于planets元组列表,我们更推荐定义一个case 类Planet(name: String, distance: Double) 列表

  • 相关阅读:
    转:阅读代码
    转:三个教程
    转:C/C++程序员简历模板
    转:对于一个字节(8bit)的变量,求其二进制表示中“1”的个数
    内存偏移
    转:用C++实现的一种插件体系结构-----概述
    转:用异或实现两个数的交换的问题
    转:二级指针
    转:《链接、装载与库》里的一个错误:关于调用栈
    转:你应当如何学习C++(以及编程)(rev#1)
  • 原文地址:https://www.cnblogs.com/zhouwenyang/p/13862622.html
Copyright © 2011-2022 走看看