Scala 学习笔记(转)

xuyingjun 2015-05-06 12:01:01
scala是以实现scaleable language为初衷设计出来的一门语言。官方中,称它是object-oriented language和functional language的混合式语言。并且,scala可以和java程序无缝拼接,因为scala文件编译后也是成为.class文件,并且在JVM上运行。不过,我更关心的是它的scaleable(扩展性)。一门语言到底怎样才算有扩展性呢?对语言而言什么是它的扩展性呢?

个人拙见,认为语言的扩展性可能包括两个方面:

1、语言本身的扩展性

2、由此语言写出来的程序的扩展性

对于第一点,在scala的介绍中提到有些developer可以用scala来定义自己的Domain Specific Language。我想,这一点也许就体现了scala语言本身的扩展性,即它有潜力可以被加工为另一门可用在专门领域中的语言(或许是通过增加某些模型,或某些操作等)。

对于第二点,感触最深的就是马上要见到的Tuple。曾经在做一个项目时,希望一个函数可以多返回两个参数,而不得不重新定义一个JavaBean(继承了它的前辈以保留之前的其他返回值),但是这样导致上层代码一片混乱,一会儿是调用原先的BaseBean,一会儿又是调用新的Bean。如果Java中也能有类似Tuple的东西就太方便了。

文中将描述三个内容:

Tuple -可以将不同类型的数据存储在一个数组中

singleton objects - scala中没有静态方法和属性,全部由singleton object(单例对象)来替代

trait - scala中的类interface物,但是可以拥有方法体,并且可以在类实例化时混入,而不需为了包装某个类而产生子类

Tuples 数组
Like Lists, tuples are immutable, but unlike Lists, tuples can contain different types of elements. Thus whereas a list might be a List[Int] or a List[String], a tuple could contain both an Int and a String at the same time. Tuples are very useful, for example, if you need to return multiple objects from a method. Whereas in Java, you would often create a JavaBean-like class to hold the multiple return values, in Scala you can simply return a tuple.

val pair = (99, "Luftballons")
println(pair._1)
println(pair._2)

...全文
617 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
solids 2015-08-15
  • 打赏
  • 举报
回复
引用 2 楼 JackRui2008 的回复:
在函数中,如果作为参数的,好像只到 Tuple20.。。。有点晕
case class满足你,200都ok
JackRui2008 2015-05-12
  • 打赏
  • 举报
回复
在函数中,如果作为参数的,好像只到 Tuple20.。。。有点晕
qq_27964359 2015-05-06
  • 打赏
  • 举报
回复
学习学习学习学习学习

1,258

社区成员

发帖
与我相关
我的任务
社区描述
Spark由Scala写成,是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于MapReduce算法实现的分布式计算。
社区管理员
  • Spark
  • shiter
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧