元组的使用

本文介绍了Scala中的元组概念,包括定义、基本操作如访问元素、迭代和转换为字符串。编程要求部分指导如何统计给定元组中所有整数的乘积,以实现特定功能。
摘要由CSDN通过智能技术生成

第4关:元组的使用

100

  • 任务要求
  • 参考答案
  • 评论8

任务描述

本关任务:统计元组中所有整数的积。

相关知识

Scala 提供了一套很好的集合实现,Scala 集合分为可变的和不可变的集合。可变集合可以在适当的地方被更新或扩展。也就是说你可以修改,添加,移除一个集合的元素。相比之下,不可变集合类永远不会改变。不过,你仍然可以模拟添加,移除或更新操作。但是这些操作将在每一种情况下都返回

一个新的集合,同时使原来的集合不发生改变。在默认的情况下,Scala 使用的是不可变的集合类。本实训介绍的也是基于不可变集合类。

常见的集合类有 List 列表、Set 集合、Map 映射和元组等。接下来我们将为大家介绍第四种集合---元组。

元组简介

元组看起来犹如列表,都可以存储重复元素,但是它们之间最大的不同是元组可以包含不同类型的元素。

定义元组

定义元组可以有两种方式:一是直接将元素写在()中,另一种就是通过 new Tuplen()的方式。 1.直接将元素写在()中

 
  1. object ForDemo {
  2. def main(args: Array[String]): Unit = {
  3. // 定义元组
  4. val t = (1, 3.14, "Fred",1)
  5. }
  6. }

执行结果:

 
  1. (1,3.14,Fred,1)

上述代码定义了一个由三种元素组成的元组,对应的类型分别为[Int, Double, java.lang.String],另外需要注意的是,它是允许重复元素存在的(比如元素 1)。

2.通过 new Tuplen()的方式

 
  1. object ForDemo {
  2. def main(args: Array[String]): Unit = {
  3. // 定义有三个元素的元组
  4. val t1 = new Tuple3(1, 3.14, "Fred")
  5. // 定义有四个元素的元组
  6. val t2 = new Tuple4(1, 3.14, "Fred",3)
  7. println(t1)
  8. println(t2)
  9. }
  10. }

执行结果:

 
  1. (1,3.14,Fred)
  2. (1,3.14,Fred,3)

上述代码中,Tuple 后面的数字表示元组有多少个元素,比如 Tuple3 代表该元组存储 3 个元素,最多元素个数为 22。

元组的基本操作
访问元组

访问元组的元素可以通过数字索引实现。

 
  1. object ForDemo {
  2. def main(args: Array[String]): Unit = {
  3. // 创建元组
  4. val t = (4,3,2,1)
  5. // 计算元组中各元素的和
  6. val sum = t._1 + t._2 + t._3 + t._4
  7. println( "元素之和为: " + sum )
  8. }
  9. }

计算结果:

 
  1. 元素之和为: 10

在上述代码中,我们使用了 t._1 访问元组的第一个元素, t._2 访问第二个元素。

迭代元组

productIterator() 方法可以迭代输出元组的所有元素,元素的输出顺序和定义时相同。

 
  1. object ForDemo {
  2. def main(args: Array[String]): Unit = {
  3. // 创建元组
  4. val t = (4,3,2,1)
  5. t.productIterator.foreach{ i =>println( i )}
  6. }
  7. }

执行结果:

 
  1. 4
  2. 3
  3. 2
  4. 1
元组转为字符串

toString() 方法能将元组的所有元素组合成一个由逗号拼接的字符串。

 
  1. object ForDemo {
  2. def main(args: Array[String]): Unit = {
  3. // 创建元组
  4. val t = new Tuple3(1, "hello", "edu")
  5. println("连接后的字符串为: " + t.toString() )
  6. }
  7. }

执行结果:

 
  1. 连接后的字符串为: (1,hello,edu)
编程要求

仔细阅读右侧编辑区内给出的代码框架及注释,在 Begin-End 间编写程序代码,统计元组中所有整数的积,具体要求如下:

  • 根据给定数据创建元组(给定数据为:23,hello,3,33,hi,map,51);
  • 统计元组中所有整数的积。
测试说明

平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。

例: 测试输入:

 

预期输出:

 
  1. 整数积为: 116127
  2. object ForDemo {

      def main(args: Array[String]): Unit = {

        // 请在 Begin-End 间编写代码

        /********** Begin **********/

        val data = (23, "hello", 3, 33, "hi", "map", 51)

        var product = 1

        for (elem <- data.productIterator if elem.isInstanceOf[Int]) {

          product *= elem.asInstanceOf[Int]

        }

        println("整数积为: " + product)

        /********** End **********/

      }

    }

  • 21
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值