1 定义变量和常量的
var a:Int = 20
var a = 20
//变量,必需初始化,类型写在变量名字后面(可以省略,可以自动推导出来类型)
//常量
val a:Int = 20
//不可改变,重新赋值
//开发过程优先使用常量,更安全,特别是在多线程中
2 标识符的命名规范
(1)scala可以使用任意的字符作为标识符(不能数字开头)
(2) 遵守java的命名规范(但下划线有特殊的意义,一般要慎用)
(3) 可以使用运算符作为标识符(这个一般用来定义数据的运算符函数)
(4) 使用非常特殊的字符做标识符使用反引号引起来
var ` ` = 20
//定义了一个空格为变量名的变量
3 关于函数的省略
- 如果没有return, 则自动把最后一行的值返回
- 如果函数实现只有一行代码, 则 { }可以省略
- 如果内部没有时候用return, 则返回值的类型也可以省略,scala编译器会根据最后一行得到值的类型进行自动推导
- 如果在调用函数的时候, 如果没有参数则愿括号可以省略
关于返回值: - 如果没有return, 则自动把最后一行的值返回
- 如果有return, 则代码执行到return会结束函数, 返回return后面的值.这个时候返回值类型就 不能推导了!!!
- 如果函数的返回值声明为 Unit, 那么在函数内部, 不管你return的值是什么,
返回的就用于是Unit - 如果你的返回值是 Unit, 那么这个时候,其实可以省略掉 :Unit=
关于声明: - 其实在声明的时候, 如果参数的个数是 0, 那么声明的时候, 圆括号也可以省略.
这个时候调用的时候, 圆括号就必须省略!!!
4 可变参数
//定义一个可变参数的函数func
def func(a:Int*)
//假如有一个数组arr,把arr传递给func
func(arr:_*)
5 高阶函数
如果一个函数一个或者多个函数作为参数,或者返回值是函数就叫高阶函数
//定义一个高阶函数
def foo(f:(Int,Int)=>Int)={
f(10,20)
}
//f:(Int,Int)=>Int 这是foo函数的参数,这个参数是一个形式参数f,f为一个接收两个int值的参数,返回值为一个int值的函数
//如果定义一个符合该f的函数就可以把该函数传递给foo
- 匿名函数
匿名函数一般用来传递高阶函数的参数
//匿名函数的定义
val f = (a:Int,b:Int) => {
...
}//如果函数体只有一条语句那可以省略
//平时我们正常定义一个函数
def a(a:Int,b:Int) => {
...
}
//匿名函数就是把def 和函数名字去掉,然后把后面的等号换成"=>"
- 函数柯里化
将一个参数列表的多个函数参数变成多个列表的过程叫柯理化
def add(a:Int,b:Int) = a + b
//柯理化之后
def add(a:Int)(b:Int) = a + b
- 名调用和值调用
值调用:
def foo(a:Int) = {}
名调用:
def foo(a:=>Int)={}
-
方法转函数
使用方法名_ -
部分参数
//在函数函数调用的时候
val f = add(_,20)//这里会生成一个函数
f(10)//这里返回30
这篇博客详细介绍了Scala编程的基础知识,包括如何定义变量和常量,标识符的命名规范,函数的省略规则,如自动返回值和函数体简化。此外,还讨论了可变参数和高阶函数的概念,如匿名函数、函数柯里化以及方法的值调用和名调用。
608

被折叠的 条评论
为什么被折叠?



