【Todo】【转载】Scala中Array, List, Tuple的区别
参考了这篇文章:
https://my.oschina.net/u/1034176/blog/512314
1. 在Scala 2.7中,Array、List都不能混合类型,只有Tuple可以;而在Scala以上版本中,3者的元素都可以混合不同的类型(转化为Any类型),只不过是当使用混合类型时,Array和List会将元素类型转化为Any类型,而Tuple则保留每一个元素的初始类型。
2. 可变性

3. 关于初始化
Array
1) val array= new Array[String](3) // Array(null, null, null)相当于声明了3个null值的空元素
val array= Array("a","b","c","d") // 相当于 Array.apply("a","b","c","d") 定义一个类型为Any的Array:
val aa = Array[Any](1, 2)
或
val aa: Array[Any] = Array(1, 2)
或
val aa: Array[_] = Array(1, 2)
List
val list:List[Int] = List(1,3,4,5,6) // 或者 val list = List(1,3,4,5,6) (:::)实现叠加List,(::)cons:将新元素组合到列表的最前端。
元素合并使用::,集合合并使用:::,示例如下:
其中Nil代表空元素 val list2 = "a"::"b"::"c"::Nil // Nil是必须的 val list4 = list2:::list3
Tuple
元组也是不可变的,但是元组可以是不同类型的数据,实例化:var a = (,),可以通过点号,下划线,-N(N从1开始)的索引访问元素 var tuple = (200, "str", 3.14159)
println(tuple._1)
println(tuple._2)
println(tuple._3)
Todo:这个文章所在的博客可以看一下,还是有不少有意思的内容的:
https://my.oschina.net/u/1034176/blog
【Todo】【转载】Scala中Array, List, Tuple的区别的更多相关文章
- Scala 中Array,List,Tuple的差别
尽管学了一段时间的Scala了,可是总认为基础不是太扎实,还有非常多的基础知识比較模糊.于是近期又打算又一次学习基础. Scala中的三种集合类型包含:Array,List,Tuple.那么究竟这三种 ...
- scala中Array简单实用
/** * 在scala中数组的使用 * 和java很类似,初始化后,长度就固定了,而且元素全部根据其类型初始化 * */ object arrayUse { def main(args: Array ...
- Scala 中object和class的区别
Scala中没有静态类型,但是有有“伴侣对象”,起到类似的作用. Scala中类对象中不可有静态变量和静态方法,但是提供了“伴侣对象”的功能:在和类的同一个文件中定义同名的Object对象:(须在同一 ...
- Scala中 object 和 class的区别
object 在scala中没有静态方法和静态字段,所以在scala中可以用object来实现这些功能,直接用对象名调用的方法都是采用这种实现方式,例如Array.toString.对象的构造器在第一 ...
- Scala中 => Unit 与 () =>Unit的区别
() => Unit ---> 是一个函数:=> Unit --> 是一个执行结果为Unit的表达式 code: => Unit是 by name 传递参数.参数是一个返 ...
- Scala中==,eq与equals的区别
根据官方API的定义: final def ==(arg0: Any): Boolean The expression x == that is equivalent to if (x eq null ...
- numpy中array和asarray的区别
array和asarray都可以将结构数据转化为ndarray,但是主要区别就是当数据源是ndarray时,array仍然会copy出一个副本,占用新的内存,但asarray不会. 举例说明: imp ...
- scala中Map和Tuple
/** * Created by root * Description : Tuple and Map */ object MapTest { def main(args: Array[String] ...
- Scala中class和object的区别
1.class scala的类和C#中的类有点不一样,诸如: 声明一个未用priavate修饰的字段 var age,scala编译器会字段帮我们生产一个私有字段和2个公有方法get和set ,这和C ...
随机推荐
- shell-code-2-传参
#在执行shell脚本时,带参数,如./test.sh 1 2 3,则在脚本test.sh内,参数表示为$n的形式,$1为第一个参数,以此类推. echo "第一个参数为:$1"; ...
- appIcon
原文地址:https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/IconM ...
- 使用Lucene的java api 写入和读取索引库
import org.apache.commons.io.FileUtils;import org.apache.lucene.analysis.standard.StandardAnalyzer;i ...
- 安卓启动图去除顶部title和状态栏
1.在启动页的xml配置中,设置layout的id, <?xml version="1.0" encoding="utf-8"?> <Line ...
- JavaScript 逗号操作符
让我们从一个有趣的微博开始吧. 末尾的c是优先级最低的逗号操作符.逗号操作符是操作符优先级的最后一行,并且很少有文章记录,它隐藏着它的锋芒.它可能不是JavaScript强势操作符,但是我喜欢它.它简 ...
- DDoS 攻击与防御:从原理到实践(上)
欢迎访问网易云社区,了解更多网易技术产品运营经验. 可怕的 DDoS 出于打击报复.敲诈勒索.政治需要等各种原因,加上攻击成本越来越低.效果特别明显等趋势,DDoS 攻击已经演变成全球性的网络安全威胁 ...
- POJ-2594 Treasure Exploration,floyd+最小路径覆盖!
Treasure Exploration 复见此题,时隔久远,已忘,悲矣! 题意:用最少的机器人沿单向边走完( ...
- Selenium+Chrome+PhantomJS 爬取淘宝
https://github.com/factsbenchmarks/taobao-jingdong 一 简单铺垫 Selenium负责驱动浏览器与python对接 PhantomJS负责渲染解析Ja ...
- 计算系数(codevs 1137)
题目描述 Description 给定一个多项式(ax + by)^k,请求出多项式展开后x^n y^m项的系数. 输入描述 Input Description 共一行,包含 5 个整数,分别为a,b ...
- UVa1363 Joseph's Problem
把整个序列进行拆分成[k,k/2),[k/2, k/3), [k/3,k/4)...k[k/a, k/b)的形式,对于k/i(整除)相同的项,k%i成等差数列. /*by SilverN*/ #inc ...