博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Scala基础
阅读量:5924 次
发布时间:2019-06-19

本文共 2790 字,大约阅读时间需要 9 分钟。

1.1. 声明变量

package cn.itcast.scalaobject VariableDemo {  def main(args: Array[String]) {    //使用val定义的变量值是不可变的,相当于java里用final修饰的变量    val i = 1    //使用var定义的变量是可变得,在Scala中鼓励使用val    var s = "hello"    //Scala编译器会自动推断变量的类型,必要的时候可以指定类型    //变量名在前,类型在后    val str: String = "itcast"  }}

1.2. 常用类型

Scala和Java一样,有7种数值类型Byte、Char、Short、Int、Long、Float、Double类型和1个Boolean类型。
1.3. 条件表达式
Scala的条件表达式比较简洁,定义变量时加上if else判断条件。例如:

package cn.itcast.scalaobject ConditionDemo {  def main(args: Array[String]) {    val x = 1    //判断x的值,将结果赋给y    val y = if (x > 0) 1 else -1    //打印y的值    println(y)    //支持混合类型表达式    val z = if (x > 1) 1 else "error"    //打印z的值    println(z)    //如果缺失else,相当于if (x > 2) 1 else ()    val m = if (x > 2) 1    println(m)    //在scala中每个表达式都有值,scala中有个Unit类,用作不返回任何结果的方法的结果类型,相当于Java中的void,Unit只有一个实例值,写成()。    val n = if (x > 2) 1 else ()    println(n)    //if和else if    val k = if (x < 0) 0    else if (x >= 1) 1 else -1    println(k)  }}

1.4. 块表达式

定义变量时用 {} 包含一系列表达式,其中块的最后一个表达式的值就是块的值。

package cn.itcast.scalaobject BlockExpressionDemo {  def main(args: Array[String]) {    val a = 10val b = 20    //在scala中{}中包含一系列表达式,块中最后一个表达式的值就是块的值    //下面就是一个块表达式    val result = {val c=b-aval d=b-cd   //块中最后一个表达式的值} //result的值就是块表达式的结果  println(result)}}

1.5. 循环

在scala中有for循环和while循环,用for循环比较多
for循环语法结构:for (i <- 表达式/数组/集合)

package cn.itcast.scalaobject ForDemo {  def main(args: Array[String]) {    //for(i <- 表达式),表达式1 to 10返回一个Range(区间)    //每次循环将区间中的一个值赋给i    for (i <- 1 to 10)      println(i)    //for(i <- 数组)    val arr = Array("a", "b", "c")    for (i <- arr)      println(i)    //高级for循环    //每个生成器都可以带一个条件,注意:if前面没有分号    for(i <- 1 to 3; j <- 1 to 3 if i != j)      print((10 * i + j) + " ")    println()    //for推导式:如果for循环的循环体以yield开始,则该循环会构建出一个集合    //每次迭代生成集合中的一个值    val v = for (i <- 1 to 10) yield i * 10    println(v)  }}

1.6. 调用方法和函数

Scala中的+ - * / %等操作符的作用与Java一样,位操作符 & | ^ >> <<也一样。只是有一点特别的:这些操作符实际上是方法。例如:
a + b
是如下方法调用的简写:
a.+(b)
a 方法 b可以写成 a.方法(b)
1.7. 定义方法和函数1.7.1. 定义方法
Scala基础
方法的返回值类型可以不写,编译器可以自动推断出来,但是对于递归函数,必须指定返回类型
Scala基础
1.7.2. 定义函数
Scala基础
1.7.3. 方法和函数的区别
在函数式编程语言中,函数是“头等公民”,它可以像任何其他数据类型一样被传递和操作,函数是一个对象,继承自FuctionN。
函数对象有apply、curried、toString、tupled这些方法。而方法不具有这些特性。
如果想把方法转换成一个函数,可以用方法名跟上下划线的方式。
案例:首先定义一个方法,再定义一个函数,然后将函数传递到方法里面
Scala基础

package cn.itcast.scalaobject MethodAndFunctionDemo {  //定义一个方法  //方法m2参数要求是一个函数,函数的参数必须是两个Int类型  //返回值类型也是Int类型  def m1(f: (Int, Int) => Int) : Int = {    f(2, 6)  }  //定义一个函数f1,参数是两个Int类型,返回值是一个Int类型  val f1 = (x: Int, y: Int) => x + y  //再定义一个函数f2  val f2 = (m: Int, n: Int) => m * n  //main方法  def main(args: Array[String]) {    //调用m1方法,并传入f1函数    val r1 = m1(f1)    println(r1)    //调用m1方法,并传入f2函数    val r2 = m1(f2)    println(r2)  }}

1.7.4. 将方法转换成函数(神奇的下划线)

将方法转换成函数,只需要在方法的后面加上一个下划线

转载于:https://blog.51cto.com/13587708/2152001

你可能感兴趣的文章
使用Vue构建中(大)型应用
查看>>
堆和堆排序
查看>>
利用Guava的Suppliers.memoize实现单例
查看>>
在Android NDK中使用OpenSSL
查看>>
最全前端开发面试问题及答案整理
查看>>
学习xss的一些记录(一)
查看>>
SegmentFault 创始人祁宁对话 C# 之父 Anders Hejlsberg
查看>>
深入理解javascript函数
查看>>
使用 PHP 7 给 Web 应用加速
查看>>
微软宣布 Win10 设备数突破8亿,距离10亿还远吗?
查看>>
monogdb操作system.*权限
查看>>
个人总结的一个中高级Java开发工程师或架构师需要掌握的一些技能 ...
查看>>
在Data Lake Analytics中使用视图
查看>>
阿里云中间件是什么-阿里云中间件介绍
查看>>
金三银四,跳槽为敬
查看>>
助力AIoT,雅观科技发布空间智能化操作系统
查看>>
博鳌“‘AI+时代’来了吗”分论坛,嘉宾们有何重要观点? ...
查看>>
机器视觉技术在表面缺陷检测方面的发展趋势
查看>>
网站计数器 web映射
查看>>
好程序员技术文档HTML5开发中的javascript闭包
查看>>