scala学习笔记

这篇博客详细介绍了Scala编程的基础知识,包括如何定义变量和常量,标识符的命名规范,函数的省略规则,如自动返回值和函数体简化。此外,还讨论了可变参数和高阶函数的概念,如匿名函数、函数柯里化以及方法的值调用和名调用。

1 定义变量和常量的

var a:Int = 20
var a = 20
//变量,必需初始化,类型写在变量名字后面(可以省略,可以自动推导出来类型)

//常量
val a:Int = 20
//不可改变,重新赋值

//开发过程优先使用常量,更安全,特别是在多线程中

2 标识符的命名规范

(1)scala可以使用任意的字符作为标识符(不能数字开头)
(2) 遵守java的命名规范(但下划线有特殊的意义,一般要慎用)
(3) 可以使用运算符作为标识符(这个一般用来定义数据的运算符函数)
(4) 使用非常特殊的字符做标识符使用反引号引起来

var ` ` = 20
//定义了一个空格为变量名的变量

3 关于函数的省略

  1. 如果没有return, 则自动把最后一行的值返回
  2. 如果函数实现只有一行代码, 则 { }可以省略
  3. 如果内部没有时候用return, 则返回值的类型也可以省略,scala编译器会根据最后一行得到值的类型进行自动推导
  4. 如果在调用函数的时候, 如果没有参数则愿括号可以省略
    关于返回值:
  5. 如果没有return, 则自动把最后一行的值返回
  6. 如果有return, 则代码执行到return会结束函数, 返回return后面的值.这个时候返回值类型就 不能推导了!!!
  7. 如果函数的返回值声明为 Unit, 那么在函数内部, 不管你return的值是什么,
    返回的就用于是Unit
  8. 如果你的返回值是 Unit, 那么这个时候,其实可以省略掉 :Unit=
    关于声明:
  9. 其实在声明的时候, 如果参数的个数是 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
  1. 匿名函数
    匿名函数一般用来传递高阶函数的参数
//匿名函数的定义
val f = (a:Int,b:Int) => {
      ...
    }//如果函数体只有一条语句那可以省略
//平时我们正常定义一个函数
def  a(a:Int,b:Int) => {
      ...
    }
    //匿名函数就是把def 和函数名字去掉,然后把后面的等号换成"=>"
  1. 函数柯里化
    将一个参数列表的多个函数参数变成多个列表的过程叫柯理化
def add(a:Int,b:Int) = a + b
//柯理化之后
def add(a:Int)(b:Int) = a + b
  1. 名调用和值调用
    值调用:
def foo(a:Int) = {}

名调用:

def foo(a:=>Int)={}
  1. 方法转函数
    使用方法名_

  2. 部分参数

//在函数函数调用的时候
val f = add(_,20)//这里会生成一个函数
f(10)//这里返回30
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值