Scala学习一

一、scala中的方法

1.Scala中方法的格式

def 方法名(参数名:参数类型,参数名:参数类型):[return type]={//方法体}

省略条件:

1.参数列表的参数类型不能省略
2.参数值类型可以省略,由scala编译器自动推断
3.返回值可以不写return,默认就是{}块表达式的值
4.定义递归方法,不能省略返回值类型

如:获取最大值

//定义方法
def getMaxNum(a:Int, b:Int):Int = {
    return if(a > b) a else b
}
//调用方法
val maxNum = getMaxNum(20, 40)
//打印结果
printIn("maxNum: " + maxNum)

根据上面的省略条件2可以进行省略:

//定义方法
def getMaxNum(a:Int, b:Int) = if(a>b) a else b
//调用方法
val maxNum = getMaxNum(20, 40)
//打印结果
printIn("maxNum: "+ maxNum)

2.使用惰性方法

当记录方法返回值的变量被声明为lazy时,方法的执行将被推迟,直到我们首次使用该值时,方法才会执行。类似java中的延迟加载。同时lazy不能修饰var类型的变量。

例如想延迟调用则

//定义方法
def getSum(a:Int, b:Int)= a + b
//使用惰性方法
lazy val sum = getSum(1,2);

//调用是才会加载getSum()方法
printIn("sum: " + sum)

3.Scala中的方法参数

默认参数、带名参数、变长参数

默认参数:

//定义方法,同时带默认值
def getSum(x:Int = 10 , y:Int = 20) = x + y
//通过该默认参数的形式调用该方法
val sum = getSum()
//打印结果
print("sum: " + sum) //30

带名参数

//定义方法,同时带默认值
def getSum(x:Int = 10 , y:Int) = x + y
//通过该默认参数的形式调用该方法
val sum = getSum(y=10)
//打印结果
print("sum: " + sum) //20

变长参数

def 方法名(参数名:参数类型*):返回值类型 = {
    //方法体
}

例如:

//定义方法
def getSum(a:Int*)=a.sum
//调用方法
val sum = getSum(3,4,5,6,7)
//打印结果
printIn("sum: "+ sum) //25

二、函数

定义函数

val 函数变量名 = (参数名:参数类型,参数名:参数类型) =>函数体

使用函数

//定义函数
val getSum = (x:Int,y:Int) => x + y
//调用函数
val result = getSum(20,30)
//打印结果
printIn("result: "+ result) //50

Scala中的方法与函数:

方法是属于类或者对象的,在运行时,它是加载到JVM的方法区中,而函数则是加载到JVM的堆内存中,同时可以将函数对象赋值给一个变量。函数是一个对象,继承自FunctionN,函数对象有apply、curried、toSting、tupled这些方法,而方法则没有。这是scala与java不同的地方。

将方法转换成函数的方式

val 变量名 = 方法名 _  //格式为: 方法名 + 空格 + 下划线

例如:

//定义方法
def add(x:Int, y:Int) = x + y
//将方法换成函数
val a = add _
//调用函数
val result = a(10,30)
//打印结果
printIn("result: " + result) //40

关于for循环写法

for(i <- 1 to n) 等价于 for(int i = 1, i <= n, n++)

进行插值打印方式

//打印参数j*i= (j*i的积),如3*5=15
print(s"${j}*${i}=${j*i})

本文分享自微信公众号 - 后端技术学习(gh_9f5627e6cc61),作者:路行的亚洲

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-09-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • kafka学习六-生产延迟操作

    这里思考问题,什么时候会用到延迟组件,同时哪些时候会用到延迟组件,同时为什么要用延迟组件?

    路行的亚洲
  • Mysql学习-sql优化

    3)尽量避免NULL:很多表都包含可为NULL(空值)的列,通常情况下最好指定为NOT NULL。因为如果查询中包含可为NULL的列,对于Mysql来说更难优化...

    路行的亚洲
  • Kafka学习四

    在kafka启动时,首先执行的broker的操作,然后接着会执行生产者操作,接着将生产者的消息放入到存储中,此时生产者和broker会进行交互,而消费者发送消...

    路行的亚洲
  • Play For Scala 开发指南 - 第2章 Scala基本语法

    joymufeng
  • 编写高效的Android代码

    毫无疑问,基于Android平台的设备一定是嵌入式设备。现代的手持设备不仅仅是一部电话那么简单,它还是一个小型的手持电脑,但是,即使是最快的最高端的手持设备也远...

    飞雪无情
  • SCP 命令

    用户1697231
  • Go语言实战笔记(二十四)| Go 反射

    和Java语言一样,Go也实现运行时反射,这为我们提供一种可以在运行时操作任意类型对象的能力。比如我们可以查看一个接口变量的具体类型,看看一个结构体有多少字段,...

    飞雪无情
  • 详细解析Linux scp命令的应用

    转载前:建议在使用scp前,使用key验证,来减少密码输入的麻烦~ Linux scp命令用于Linux之间复制文件和目录,具体如何使用这里好好介绍一下,从本...

    用户2353021
  • linux scp命令详解

    Java学习123
  • Linux scp使用详解

    Java学习123

扫码关注云+社区

领取腾讯云代金券