Scala系列:基本语法

1、常量和变量

val声明出来的为常量,不能再次赋值;可以省略类型,scala会自动推导。

var声明出来的为变量,可以再次赋值;可以省略类型,scala会自动推导。

var a = "xxx"; 等同于 var a : String = "xxx";

a = "String 2";

val b = 2;

b = 3; // 会出错

声明多个变量:

val a, b = "xxx"; // a, b的值都是 "xxx"

2、scala的常用数据类型:

Byte:内置转换为scala.runtime.RichByte

Char:内置转换为scala.runtime.RichChar

Short:内置转换为

Int:内置转换为scala.runtime.RichInt

Long:内置转换为scala.runtime.RichLong

Float:内置转换为scala.runtime.RichFloat

Double:内置转换为scala.runtime.RichDouble

Boolean:内置转换为scala.runtime.RichBoolean

这些类型都是类,Scala并不区分基本类型与引用类型。

与java基本类型相对应,但拥有更多的方法,因为会转换为相应的RichXxxx,在转换后的类里添加scala语言层面的方法。

例如:

  1.toLong,其中1会被转换为RichInt类型的实例。

  1.to(5)会产生Range(1, 2, 3, 4, 5)

任意有穷数字:

BigInt:

BigDecimal:

3、类型转换

使用方法,没有强制转换一说。

如:var a : Int = 1

  var b : Long = a.toLong

4、操作符重载

val value = 8 + 5

其中,+ 这些操作是方法。

完整的是val value = (8).+(5);

(8)转换成Int对象,调用Int对象的+方法(方法名为+)。

5、Scala方法调用的简略写法

方法的简略写法:

  a 方法 b

完整写

  a.方法(b)

例:1.to(2),可简略写为1 to 2

时间: 2024-10-29 19:06:59

Scala系列:基本语法的相关文章

scala系列--基础语法

Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ; 是可选的. 区分大小写 -  Scala是大小写敏感的,这意味着标识Hello 和 hello在Scala中会有不同的含义. 类名 - 对于所有的类名的第一个字母要大写. 方法名称 - 所有的方法名称的第一个字母用小写. 程序文件名 - 程序文件的名称应该与对象名称完全匹配. import语句可以出现在任何地方,而不是只能在文件顶部.import的效果从开始延伸到语句块的结束. 如果想要引入包中的几个成员,可以使用selec

好程序员大数据学习路线分享Scala系列之泛型

好程序员大数据学习路线分享Scala系列之泛型,带有一个或多个类型参数的类是泛型的. 泛型类的定义: //带有类型参数A的类定义class Stack[A] {private var elements: List[A] = Nil//泛型方法def push(x: A) { elements = x :: elements }def peek: A = elements.headdef pop(): A = {val currentTop = peekelements = elements.ta

Scala匿名函数语法

Scala中定义匿名函数的语法是相当轻量的.下面的表达式就定义了一个接受一个Int 类型输入参数的匿名函数: 上述定义的匿名函数,其实是下面这种写法的简写: 简单调用如下: 我们当然也可以定义多个参数的匿名函数: 多参数使用Function语法来定义如下   也可以定义没有参数的匿名函数: 匿名函数的Function语法的实现如下:   用来表示上述三个匿名函数(一个参数,两个参数,无参数)的函数类型也很简单 上述三个函数的函数类型分别表示如下: Int => Int (Int,Int) =>

好程序员大数据学习路线分享Scala系列之集合操作函数

好程序员大数据学习路线继续为大家分享Scala系列之集合操作函数4.6 集合的重要函数4.6.1sum/max/min/count在序列中查找最大或最小值是一个极常见的需求,如下:val numbers = Seq(11, 2, 5, 1, 6, 3, 9) numbers.max //11 numbers.min //1 更高级的例子,其中包含一个书的序列case class Book(title: String, pages: Int) val books = Seq( Book("Futu

大数据教程Scala系列之方法的嵌套和方法多态

大数据教程为大家分享Scala系列之方法的嵌套和方法多态方法里嵌套定义其他方法示例1object EmbedDemo { def add3(x:Int,y:Int,z:Int)={def add2(x:Int,y:Int)={x+y}add2(add2(x,y),z)} def main(args: Array[String]): Unit = {println(add3(1,2,3)) //6}}示例2def factorial(x: Int): Int = {def fact(x: Int,

好程序员大数据教程分享Scala系列之Option_偏函数_String

好程序员大数据教程分享Scala系列之Option_偏函数_StringOption类型在Scala中Option类型样例类用来表示可能存在或也可能不存在的值(Option的子类有Some和None).Some包装了某个值,None表示没有值. object OptionDemo {def main(args: Array[String]) {val map = Map("a" -> 1, "b" -> 2)val v = map.get("b

好程序员大数据教程Scala系列之样例类_Option_偏函数

好程序员大数据教程Scala系列之样例类_Option_偏函数,在Scala中Option类型样例类用来表示可能存在或也可能不存在的值(Option的子类有Some和None).Some包装了某个值,None表示没有值. object?OptionDemo {??def?main(args: Array[String]) {????val?map = Map("a"?-> 1, "b"?-> 2)????val?v = map.get("b&q

大数据Scala系列之文件以及正则表达式

大数据Scala系列之文件以及正则表达式1 读取行导入scala.io.Source后,即可引用Source中的方法读取文件信息. import scala.io.Sourceobject FileDemo extends App{val source = Source.fromFile("C:/Users/admin/res.txt")//返回一个迭代器val lines = source.getLines()for(i <- lines)println(i)//内容也可以放到

大数据Scala系列之特质

大数据Scala系列之特质,特质的定义除了使用关键字trait之外,与类定义无异. 特质用来在类之间进行接口或者属性的共享.类和对象都可以继承特质,特质不能被实例化,因此也没有参数. 一旦特质被定义了,就可以使用extends或者with在类中混入特质. 1 作为接口使用的特质特质的定义: trait Logger{//这是一个抽象方法,特质中未被实现的方法默认是抽象的,不需要abstract关键字修饰def log(msg:String)} 子类对特质的实现: class ConsoleLog

好程序员大数据教程分享Scala系列之模式匹配和样例类

好程序员大数据教程分享Scala系列之模式匹配和样例类1.样例类在Scala中样例类是一中特殊的类,样例类是不可变的,可以通过值进行比较,可用于模式匹配.定义一个样例类:1.构造器中每一个参数都是val,除非显示地声明为var 2.伴生对象提供apply ,让你不使用new关键字就能构造出相应的对象case class Point(x: Int, y: Int)创建样例类对象:val point = Point(1, 2)val anotherPoint = Point(1, 2)val yet