Scala学习小结(一)

原创 2016年08月29日 18:34:45

最近在搞Spark,需要学一下Scala,这门语言虽然也是运行在JVM上的,但与Java还是不同的。

1、函数式编程,在Scala中一切皆为对象,包括函数也是对象,因此可以将函数名直接作为形参传递。如果函数字面量只有一行语句,并只带一个参数,则连指代参数都不需要,直接写传入的函数名即可。例如,遍历打印一个列表中的元素。

val oneToFive = 1::2::3::4::5::Nil
oneToFive.foreach(println)

2、列表是不可变的,这类似于Java中的String,在使用List中的方法,如删除前两个元素,使用drop(2),此时会返回一个新的List,而元List是不变的。

3、访问List中的元素,Java使用[],而Scala使用(),这是因为Scala访问元素时实际上是调用了apply()方法,赋值时调用了update()方法。

4、Scala的方法中传递的参数都是val类型的,因此不可以在方法体中对参数进行重新赋值。

5、如果没有显式的返回语句,即没有写return,则scala则会默认返回方法中最后一次计算得到的值,如果要返回某一个值,则可以不写return,直接在方法最后一行写上要返回的变量或者常量即可。Scala中基本上不写return语句。

6、Scala中没有静态变量,使用单例对象来实现静态变量和方法,其实是对静态成员的一种封装。这里面就有了孤立对象,伴生对象,伴生类等概念。如果在某个类中,要写一个静态的字段或者是方法,则可以在与该类同一个文件中写一个同名的object,即为该类的伴生对象。在使用该类时,同样可以先new该类,然后直接用.即可访问到其静态方法(在伴生对象中的)。

关于孤立对象,伴生对象,有几篇博客要推荐:

学习Scala:从HelloWorld开始(张纪刚)

学习Scala:孤立对象的实现原理(张纪刚)

学习Scala:伴生对象的实现原理(张纪刚)


更多Scala知识点学习中...

使用Scala的Type Class模式实现神经网络的问题总结(亦shapeless使用小结)

问题背景 首先演示一下问题。 首先定义一个用作初始化神经网络层的Type Class,名为CanAutoInit,具体代码如下: trait CanAutoInit[-For] ...

Java学习IO流小结--字节流

  • 2015年07月11日 14:59
  • 218KB
  • 下载

AE学习小结。

  • 2013年01月30日 10:30
  • 4.88MB
  • 下载

hadoop API 学习小结(四)

一、对于学过java的朋友来说,对于序列化应该不会陌生,序列化(serialization)指的是将结构化对象转换为字节流以便通过网络进行传输或写入持久化的过程。反序列化指的是将字节流转为一系列结构化...

myBatis学习小结.chm

  • 2012年12月25日 15:53
  • 255KB
  • 下载

oracle环境变量学习小结.

  • 2012年06月07日 16:07
  • 26KB
  • 下载

angularJS学习小结——$apply方法和$watch方法

引言    最近在项目中封装控件的时候用到了$watch方法来监听module中的值的变化,当时小编对这个方法不是很了 解,所以在网上找了一些资料来学习一下,下面小编就给大家简单介绍一些ang...

Java学习IO流小结--字符流

  • 2015年07月11日 15:01
  • 119KB
  • 下载

hibernate学习小结 @爱编程

  • 2013年07月21日 19:58
  • 45KB
  • 下载

Hadoop面试和学习小结[2013版]

[2013 UPDATE]Hadoop 2.0转型基本无可阻挡,今年下半年要正式发布了,它的出现让大家知识体系都要更新了。Hadoop1.0搞了8年才发布,2.0不到2年就出来了。2.0的核心是YAR...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Scala学习小结(一)
举报原因:
原因补充:

(最多只允许输入30个字)