1. 对象的apply方法

    (1)对象调用apply()方法,可省略成()

    (2)string对象的apply方法返回第n个字符

    "hello"(4)  //‘o’
  2. if语句的返回值

    java把语句和表达式看做2个东西,语句执行动作,表达式返回值。eg:if语句没有返回值。而scala中,大部分的语法结构都有返回值。

    (1)if..else..语法结构的返回值 = if/else后面跟随的表达式的值

    scala> val s = if(1>0) 1 else -1
    res0: Int = 1
  3. for

    (1)scala中没有for(初始值;条件;更新变量)结构的循环

    (2)如需这样的循环,2种选择:while / for(i <- 1 to n)

    scala> for(i <- 1 to 5) print(i+",")
    1,2,3,4,5,

(3)scala的for由3部分组成:生成器,守卫,循环体

生成器:变量 <- 表达式

守卫:if语句

循环体:循环的逻辑,如果循环体以yield开始,则for的返回值时一个集合

```scala
for(i <- 1 to 2; j <- 1 to 3)
print(i*j+",") //1,2,3,2,4,6, //带守卫的for
for(i <- 1 to 2; j <- 1 to 3 if j!=2)
print(i*j+",") //1,3,2,6 //yield构建集合
for(i <- 1 to 10)
yield i % 3 //Vector(1, 2, 0, 1, 2, 0, 1, 2, 0, 1)
```
  1. 函数

    //1.默认参数
    def decorate(value:String,left:String="[",right:String="]"): String ={
    left + value + right
    }
    decorate("haha") //[haha] //2.可变参数
    def sum(args:Int*): Int ={
    var sum=0
    for(i <- args)
    sum += i
    sum
    }
    sum(1 to 5: _*) //15q
  2. 懒值

    (1)懒值在第一次被调用时初始化,如果没被使用过,则不去初始化

    (2)每次访问懒值时,scala都会调用一个方法来以线程安全的方式检查该值是否被初始化

    val words = scala.io.Source.fromFile("/home/lj/aaa.txt")         //words被定义时赋值
    def words2 = scala.io.Source.fromFile("/home/lj/aaa.txt") //每次使用words2时被调用
    lazy val words3 = scala.io.Source.fromFile("/home/lj/aaa.txt") //懒值在首次使用时初始化
  3. 异常处理

    scala没有受检异常---不需要声明函数或方法抛出某种异常。try代码快返回Nothing类型

      var in = new URL("http://www.baidu.com").openStream()
    try{
    //TODO
    }finally {
    in.close()
    }

1.scala语法的更多相关文章

  1. scala语法在spark withScope上的应用

    withSpout在spark中是用来做DAG可视化的,它在代码里的用法如下(以map为例,spark 2.0.0版本) def map[U: ClassTag](f: T => U): RDD ...

  2. scala语法解析(解码指环)

    看惯了JAVA的语法,再看scala的语法,有的晦涩难懂.正好遇到一个介绍scala语法的文章,就直接截图留念.省的再临时抱佛脚了.

  3. Scala语法笔记

    JAVA中,举例你S是一个字符串,那么s(i)就是该字符串的第i个字符(s.charAt(i)).Scala中使用apply的方法 JAVA与C++的?:操作符 等同于Scala的 if ( x &g ...

  4. Java和Scala语法比较

    类型推断 挑逗指数: 四星 我们知道,Scala一向以强大的类型推断闻名于世.很多时候,我们无须关心Scala类型推断系统的存在,因为很多时候它推断的结果跟直觉是一致的. Java在2016 年也新增 ...

  5. Spark记录-Scala语法基础

    参考:http://docs.scala-lang.org/cheatsheets/index.html.http://docs.scala-lang.org/.http://www.scala-la ...

  6. Scala 语法基础

    一 简介 Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性.Scala 运行在Java虚拟机上,并兼容现有的Java程序.Scal ...

  7. Scala 语法(一)

    (1)基本语法 变量 val var(可变变量): 数据类型 Byte,Char,Int,Short,Long,String(字符),Float,Double,Boolean(true,flase). ...

  8. scala语法

    1:双重for循环(相当于j是i的内存循环):for (i <-0 to n; j <-10 to 20){ println(i);println(j)} 2:单层for循环:for (i ...

  9. Scala语法(二)

    (1)类,对象 //定义类(属性.方法),实例化对象 class counter{ *//主构造器 class counter(name:String,mode:Int){ ... } 实例化:val ...

随机推荐

  1. 关于SSH整合中对于Hibernate的Session关闭的问题

    在web.xml的Struts2的配置上面加上 <filter> <filter-name>OpenSessionInViewFilter</filter-name> ...

  2. 安卓应用运营知识:VersionCode和VersionName

    本文转载于:http://blog.sina.com.cn/s/blog_580a227a0101bdzb.html 小米应用商店运营了大概半年了,过程中有喜有泪,我们在运营过程中,发现有的运营和商务 ...

  3. 如何在WTL和MFC中使用duilib及如何静态使用duilib库!(初级讲解 附带一个Demo)

    关于duilib的历史,我也就不多说了,能看到这篇文章的人都是有一定了解才能找到这个的. 我直接说下对这个库的基本使用吧. 我个人对一些好技术都是比较感兴趣的. 因为个人原因 喜欢接触一个好技术. 所 ...

  4. Twsited异步网络框架

    Twisted是一个事件驱动的网络框架,其中包含了诸多功能,例如:网络协议.线程.数据库管理.网络操作.电子邮件等. Twisted介绍:http://blog.csdn.net/hanhuili/a ...

  5. Sklearn库例子1:Sklearn库中AdaBoost和Decision Tree运行结果的比较

    DisCrete Versus Real AdaBoost 关于Discrete 和Real AdaBoost 可以参考博客:http://www.cnblogs.com/jcchen1987/p/4 ...

  6. ABBYY PDF Transformer+从文件选项中创建PDF文档的教程

    可使用OCR文字识别软件ABBYY PDF Transformer+从Microsoft Word.Microsoft Excel.Microsoft PowerPoint.HTML.RTF.Micr ...

  7. mfs-管理员

    http://www.moosefs.org/http://moosefs.com/download.html 两个手册于2015/03/05阅完 moosefs-installation moose ...

  8. cache与负载均衡

    cache 客户端CACHE客户端CACHE,包括浏览器本身的缓存.FLASH存储等,用于存储一些临时的文件或者变化不大或无变化的数据:1.如浏览器自动将用户浏览的网页存储在用户的硬盘上,下次再浏览相 ...

  9. Q4: Two Sum

    问题描述: Given an array of integers, find two numbers such that they add up to a specific target number ...

  10. PostgreSQL数据的导出导入

    PostgreSQL数据的导出导入 导出PostgreSQL数据库中的数据: $ pg_dump -U postgres  -f mydatabase.sql  mydatabase 导入数据时首先创 ...