1.scala语法
对象的apply方法
(1)对象调用apply()方法,可省略成()
(2)string对象的apply方法返回第n个字符"hello"(4) //‘o’
if语句的返回值
java把语句和表达式看做2个东西,语句执行动作,表达式返回值。eg:if语句没有返回值。而scala中,大部分的语法结构都有返回值。
(1)if..else..语法结构的返回值 = if/else后面跟随的表达式的值scala> val s = if(1>0) 1 else -1
res0: Int = 1
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.默认参数
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
懒值
(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") //懒值在首次使用时初始化
异常处理
scala没有受检异常---不需要声明函数或方法抛出某种异常。try代码快返回Nothing类型var in = new URL("http://www.baidu.com").openStream()
try{
//TODO
}finally {
in.close()
}
1.scala语法的更多相关文章
- scala语法在spark withScope上的应用
withSpout在spark中是用来做DAG可视化的,它在代码里的用法如下(以map为例,spark 2.0.0版本) def map[U: ClassTag](f: T => U): RDD ...
- scala语法解析(解码指环)
看惯了JAVA的语法,再看scala的语法,有的晦涩难懂.正好遇到一个介绍scala语法的文章,就直接截图留念.省的再临时抱佛脚了.
- Scala语法笔记
JAVA中,举例你S是一个字符串,那么s(i)就是该字符串的第i个字符(s.charAt(i)).Scala中使用apply的方法 JAVA与C++的?:操作符 等同于Scala的 if ( x &g ...
- Java和Scala语法比较
类型推断 挑逗指数: 四星 我们知道,Scala一向以强大的类型推断闻名于世.很多时候,我们无须关心Scala类型推断系统的存在,因为很多时候它推断的结果跟直觉是一致的. Java在2016 年也新增 ...
- Spark记录-Scala语法基础
参考:http://docs.scala-lang.org/cheatsheets/index.html.http://docs.scala-lang.org/.http://www.scala-la ...
- Scala 语法基础
一 简介 Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性.Scala 运行在Java虚拟机上,并兼容现有的Java程序.Scal ...
- Scala 语法(一)
(1)基本语法 变量 val var(可变变量): 数据类型 Byte,Char,Int,Short,Long,String(字符),Float,Double,Boolean(true,flase). ...
- scala语法
1:双重for循环(相当于j是i的内存循环):for (i <-0 to n; j <-10 to 20){ println(i);println(j)} 2:单层for循环:for (i ...
- Scala语法(二)
(1)类,对象 //定义类(属性.方法),实例化对象 class counter{ *//主构造器 class counter(name:String,mode:Int){ ... } 实例化:val ...
随机推荐
- css透明度的设置 (兼容所有浏览器)
一句话搞定透明背景! .transparent_class { filter:alpha(opacity=); -moz-opacity:0.5; -khtml-opacity: 0.5; opaci ...
- SQL参数化查询--最有效可预防SQL注入攻击的防御方式
参数化查询(Parameterized Query 或 Parameterized Statement)是访问数据库时,在需要填入数值或数据的地方,使用参数 (Parameter) 来给值. 在使用参 ...
- [转] shiro简单配置
shiro(1) 注:这里只介绍spring配置模式. 因为官方例子虽然中有更加简洁的ini配置形式,但是使用ini配置无法与spring整合.而且两种配置方法一样,只是格式不一样. 涉及的jar包 ...
- mysql修改列名和列类型
MySQL中修改列名或列的数据类型 (2012-04-03 08:59:25) 转载▼ 标签: mysql 修改列名 修改列数据类型 it 分类: 数据库 参考下面链接中的语法 http://dev. ...
- javascript输出图的简单路径
<script> //图的构建 function vnode() { this.visited=0; this.vertex=0; this.arcs=new Array(); } fun ...
- 遇到EDIUS视频条全变灰色编辑不了如何处理
上次使用EDIUS编辑完的视频,这次再打开时,原素材都还能用,时间线上的视音频却都呈灰色不可编辑状态,要怎么办呢?别慌,小编来告诉你解决视频条全变灰色EDIUS不可编辑的办法. 下图就是视频全变灰色E ...
- URI、URL和URN
URI.URL和URN URI :Uniform Resource Identifier,通用资源标识符: URL:Uniform Resource Locator,统一资源定位符: URN:Unif ...
- c#, 输出二进制
int x=-17; string str= Convert.ToString(x,2);Debug.Log(str); 输出结果: 11111111111111111111111111101111 ...
- CSS控制print打印样式
来源:http://blog.csdn.net/pangni/article/details/6224533 一.添加打印样式 1. 为屏幕显示和打印分别准备一个css文件,如下所示: 用于屏幕显 ...
- TKinter之文本域与多窗口
用tkinter做出一个文本框出来,用于写字 代码很简单: #!/usr/bin/env python # _*_ coding:utf-8 _*_ from Tkinter import * roo ...