ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Scala函数的定义和类型

2022-03-05 17:01:34  阅读:194  来源: 互联网

标签:String Scala Int 定义 str 类型 def 函数


Scala函数的定义和类型

目录

1、函数的介绍

面向对象编程,将对象传来传去
1、将对象作为参数
2、将对象作为返回值
需要明确对象的类型

面向函数编程,将函数传来传去(函数也算对象,万物皆对象)
1、可以将一个函数作为参数
2、可以将一个函数作为返回值
所以需要明确每一个函数的类型
scala中函数的定义
1、可以在object创建,通过对象名直接调用
2、可以类中创建,需要创建类的对象才能调用
3、可以在任何代码块中创建,可以直接在后面调用(使用{}括起来的代码被称为代码块)

函数的基本要素
1、函数名
2、函数的参数
3、函数的返回值类型
4、函数体

2、定义函数

在代码块中定义函数
package com.shujia.scala

object Demo14 {
  def main(args: Array[String]): Unit = {
    //在代码块中(main方法中),定义一个函数,作用域只在main方法中
    def fun1():Unit = {
      println("老李牛逼")
    }

    //调用fun1()函数,可以多次调用
    fun1()  //老李牛逼
    fun1()  //老李牛逼
  }
}
在类中定义函数

在类中定义函数,main方法中可以直接调取函数;

在main方法中定义函数,在类中无法直接调取

package com.shujia.scala

object Demo14 {

  //在类中定义一个函数
  def fun1():Unit = {
    println("老李牛逼")
  }

  def main(args: Array[String]): Unit = {
    //调用fun1()函数,可以多次调用
    fun1()  //老李牛逼
    fun1()  //老李牛逼
  }

}

3、函数的类型

函数类型的描述
1、函数的类型,与函数的参数、函数的返回值类型有关

2、函数类型的描述
    def add(i: Int): Int = {
        i + 1
    }
这是一个参数为Int类型、返回值为Int类型的函数

    def fun3(str: String): Unit = {
      println(str)
    }
这是一个参数为String类型、没有返回值的函数

3、函数类型的表示方式: Int => Int
函数的简写1
1、如果函数体只有一行,{}可以省略
2、如果最后一行作为返回值,return可以省略
3、如果没有参数,()可以省略
4、返回值类型可以省略,会自动推断

 def fun3(str: String): Unit = {
      println(str)
    }

简写:
	def fun3(str: String): Unit = println(str)
函数的简写2:lambda格式(匿名函数)
def fun2(str: String): Int = {
      str.toInt
    }
    
lambda格式:
	(str: String) => str.toInt
	
=> :左边是参数
=> :右边是函数体(返回值)

函数的引用:将函数赋值给一个常量/变量

val fun5: String => Int = (str: String) => str.toInt
等价于
val fun5: String => Int = fun2

println(fun5("888"))  //888

标签:String,Scala,Int,定义,str,类型,def,函数
来源: https://www.cnblogs.com/saowei/p/15968589.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有