40.scala编程思想笔记——元组

40.scala编程思想笔记——元组

欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/50447584
源码下载连接请见第一篇笔记。

如果从给某个方法放回的结果必须超过一项,那么创建特殊的类来保存返回值就是一种完全合法的方式。

如下:

import com.atomicscala.AtomicTest._

 

case class

 ReturnBlob(data:Double, info:String)

 

def data(input:Double) =

  if(input >5.0)

   ReturnBlob(input * 2, "High")

  else

    ReturnBlob(input* 2, "Low")

 

data(7.0) is ReturnBlob(14.0, "High")

data(4.0) is ReturnBlob(8.0, "Low")

         这个方法使得我们可以毫不费力地收集多个元素。可以通过将元素集合到圆括号的内部来创建元组,如下:

(element1,element2,element3,…)

例子如下:

import com.atomicscala.AtomicTest._

 

def data2(input:Double):(Double, String) =

  if(input >5.0)

    (input * 2,"High")

  else

    (input * 2,"Low")

 

data2(7.0) is (14.0, "High")

data2(4.0) is (8.0, "Low")

 

def data3(input:Double) =

  if(input >5.0)

    (input * 2,"High", true)

  else

    (input * 2,"Low", false)

 

data3(7.0) is (14.0, "High", true)

data3(4.0) is (8.0, "Low", false)

         元组使得集合元素变得易如反掌,因而成为了一种毫不费力的选择。

         元组拆包如下:

import com.atomicscala.AtomicTest._

 

def f =(1,3.14,"Mouse",false,"Altitude")

 

val (n, d, a, b, h) = f

 

(a, b, n, d, h) is

 ("Mouse", false, 1, 3.14, "Altitude")

 

// Tuple indexing:

val all = f

f._1 is 1

f._2 is 3.14

f._3 is "Mouse"

f._4 is false

f._5 is "Altitude"

         还有一种类似的形式可以拆包case类,如下:

import com.atomicscala.AtomicTest._

 

case class Employee(name:String, ID:Int)

val empA = Employee("Bob", 1130)

val Employee(nm, id) = empA

nm is "Bob"

id is 1130

甚至可以通过使用元组来进行初始化,如下:

scala> var ( d,n,s) = (1.1,12,"HI")

d: Double = 1.1

n: Int = 12

s: String = HI

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值