美文网首页
Scala的分号推断

Scala的分号推断

作者: Grits | 来源:发表于2018-02-28 17:04 被阅读0次

Scala 中可以不用在语句的结束位置显示地使用分号(;),编译器可以进行合理的推断。

编译器分号推断的规则

在编译时,一般情况下,一行的结束会被编译器推断成分号,除非遇到如下情况:

1.该行以一个不合法的词(word)结束,例如:句点(.)或者中缀操作符(+)
2.下一行起始词(begins word)不能开始一行语句
3.行结束语句在圆括号(parentheses)或者中括号(brackets)之内,因为这些括号不能包含多行语句(也就是说被编译器视为一行语句)

针对第三条规则:在for表达式当中,如果使用圆括号,那么有nested loop的情况下必须使用分号(因为编译器不会对圆括号进行分号推断),如果使用花括号(curly),编译器可以进行自动推断

def grep(pattern: String)=
  for {
    file <- filesHere
    if file.getName.endsWith(".scala")
    line <- fileLines(file)
    trimmed = line.trim
    if trimmed.matches(pattern)
  } println(s"$file : ${trimmed}")
  
  for (
    file <- filesHere
    if file.getName.endsWith(".scala");  // 此处分号不可省略
    line <- fileLines(file)
    if line.trim.matches(pattern)
  ) println(s"$file : ${line.trim}")

相关文章

  • Scala的分号推断

    Scala 中可以不用在语句的结束位置显示地使用分号(;),编译器可以进行合理的推断。 编译器分号推断的规则 在编...

  • Scala编程 第四章 类和对象

    分号推断 4.1 类、字段和方法 public是Scala的默认访问级别 Scala里方法参数都是val,不是va...

  • Scala 的类型推断

    Scala 的类型推断 按照官方的说法,Scala 的类型推断是基于流(flow based)的,假设有方法如下:...

  • -4- scala语句行尾分隔符

    scala行尾分隔符 Scala将行的结尾视为表达式的结尾,除非它可以推断表达式继续到下一行,常用的行尾推断分隔符...

  • 《Scala 程序设计》学习笔记 Chapter 2:更简洁 更

    分号 在 scala REPL 中,使用 :paste 模式输入多行代码,然后用 Ctrl-D 结束。[P29] ...

  • 1、Swift 基础

    声明常量与变量,分号可加可不加 类型注释 打印 注解 整数 Int 与 UInt 小数 类型推断 字面量 指数 类...

  • Swift学习笔记-基本知识

    变量,常量,分号 Swift中使用var声明变量,使用let声明常量,如果不指定类型,编译器会自动推断变量/常量的...

  • swift基础

    swift基础部分 常量和变量 注释 分号 整数 浮点数 类型安全和类型推断 数值型字面量 类型别名 布尔值 元组...

  • swift基础知识

    一.常量和变量 二.注释和分号 三.整数和浮点数 四.类型安全和类型推断 五.布尔值 六.元组Tuple 七.Op...

  • 一 基本内容1 常量和变量2 类型标注3 输出常量和变量4 分号5 整数6 浮点数7 类型安全和类型推断8 数值型...

网友评论

      本文标题:Scala的分号推断

      本文链接:https://www.haomeiwen.com/subject/oarixftx.html