Scala -- 函数

5、Scala的函数 Scala函数:递归函数、函数的简写、匿名函数、高阶函数、函数的闭包、常见的高阶函数 阅读详情

Scala 函数

代码示例

       

import java.time.LocalDateTime

/**
  * 1. object 中才能使用main函数
  * 2. 函数中可以有函数
  * 3. 函数不写等号 代表没有返回值 unit,
  *    有等号但没指定类型那么最后一行是什么类型就返回什么类型
  *    通过 :类型  指定返回值
  *    可以使用return返回,使用return的时候必须指定返回值类型
  * 4. 函数中的参数是val修饰的 不可变的
  */
object TestScalaFunction {
   // main函数
  def main(args: Array[String]): Unit = {
    //1. 声明一个函数,接受int 类型的 a ,b 两个参数,返回值为int
    def fun01(a: Int,b: Int) = {
      // 最后一行是什么代表返回什么类型值(前提没指定返回类型)
      a + b
    }
    println(fun01(23,3))
    //2. 递归
    def RecursionFun(num: Int): Int = {
      if(num == 1) {
        1
      }else{
        num + RecursionFun(num-1)
      }
    }
    println(RecursionFun(10000))
    // 3. 可变参数使用 *号;带有默认是的参数 使用 =号,例如 a:Int=10;
    def fun02(a: Int*): Unit = {
//      a.foreach(println)
//      a.foreach(println(_))
//      a.foreach(s => {print(s + "\t")})
      for (elem <- a) {
        print(elem + " \t")
      }
    }
    fun02(12,12,23,34,34,343,34,45,45,56)
    println()

    // 4. 匿名函数
    val fun03 = () => println("23232")
    def fun04 = (str: String, str2: String) => {println(str + "-" + str2)}
    fun03()
    fun04("xiaoming","12")
    println()

    // 5. 偏应用函数
    // localDateTime是java8中的时间,scala可以调用java中的类库
    def log(date: LocalDateTime,name: String,log: String): Unit ={
      println(date + " == : " + name +"操作了 "+log)
    }
//    让log函数变为一个偏应用函数 是用_ 表示这个参数需要填写
    val logto = log(LocalDateTime.now(),_: String,_:String)
    logto("小明","添加")
    logto("小明","删除")
    logto("小明","修改")

    /**
      * 高阶函数
      */
    //1. 参数为函数
    def fun05(f01:(Int,Int) => Int,a:Int,b:Int,str:String): Unit = {
      // 参数为function 直接能调用,具体实现由调用者实现
      println(str + " 计算结果 = "+ f01(a,b) )

    }
    // 传入一个匿名函数,也可以声明一个函数传入
    fun05((a,b)=>a+b,12,12,"小明")

    //2. 返回值为函数
    def fun06(a: Int,b: Int): () => String = {
      if(a < b){
        // 如果 a<0  实现一个函数
        def f() = {
            "a 小于 b"
        }
        // 返回这个函数
        f
      }else{
        def f() = {
          "a 大于 b"
        }
        f
      }
    }
    println(fun06(-1,4)())
    println(fun06(6,4)())
    //3. 参数和返回值都包含函数
    def fun07(f01:(Int,Int)=> Boolean,a:Int,b:Int): (String,String)=>String = {
      var flag = f01(a,b)
        if(flag){
          def f(name1: String,name2: String):String ={
            name1 + " 的分数大于 " + name2
          }
          f
        }else {
          def f(name1: String,name2: String):String ={
            name1 + " 的分数小于 " + name2
          }
          f
        }
    }

    println(fun07((a,b) => a > b,14,12)("小明","小红"))

    //4. 特殊高阶函数(简化版 返回值是个函数 柯里化函数)
    def fun08(f01:(Int,Int)=> Int,a:Int,b:Int)(int: Int) ={
      f01(a,b) + int
    }
    def fun09(a: Int)(b: Int) ={
       a+ b
    }
    println(fun08((a,b) => a - b,1,4)(10))
    println((fun09(12)(23)))

  }


}

 

LSTM cell结构的理解和计算 LSTM是传统RNN网络的扩展,其核心结构是其cell单元,网上LSTM的相关资料繁多,质量参差不齐,下面主要结合LSTM神经网络的详细推导和 Christopher Olah的blog两篇文章中的内容进行说明。主要介绍网络如何计算,为何这么算先不展开:)。前者一副图加上29个公式,简洁明了;后者娓娓道来,适合初学者。首先是LSTM cell最常见的结构图: 这是变形的版本(找不到更清晰的版本了), 阅读详情

相关推荐

行为验证码 AJ-Captcha 使用文档

AJ-Captcha验证码系统集成指南:需添加captcha-spring-boot-starter和Redis依赖,配置Redis连接。核心实现包括Redis缓存服务类CaptchaCacheRedisImpl(含设置、查询、删除验证码等方法)、SPI配置文件及Spring Boot配置类(配置验证码属性和Redis模板)。系统支持验证码生成、校验、防刷等安全功能,适用于Web应用安全验证场景。

千层冷面的博客 2108

Scala—函数用法详解(scala函数初步)

函数初步

喻师傅的学习笔记 2965

UE4_UE5 自定义简单水材质(UE材质图表大全1)

首先是材质的颜色节点、粗糙度节点、透明度节点。(1/2/3/4键+右键空白处,可创建一/二/三/四维节点)接着是两个法线波动节点的叠加。最后是折射节点,将fresnel菲涅尔节点连接到材质结果节点的折射输入端。到这里,你基本已经实现了一个波纹流动的水材质。后续我会更新加上海面浪花的水面材质,可以到我的专栏中寻找。有问题随时私信沟通,加油❤。

shanlinhan的博客 1983

Scala函数 总结

主函数 函数的调用 函数的匹配 函数返回类型的设定 函数的递归 嵌套函数 偏应用函数 高阶函数 柯里化函数 object Fun { /** * 定义方法 def * 主函数必须用unit * 其他的函数中,返回值类型可加也可以不用加 * @param args */ def main(args: Array[String]): Unit =...

m0_37746551的博客 306

Midas Civil实战避坑指南:从建模报错到施工阶段分析

本文详细解析了Midas Civil在桥梁建模与施工阶段分析中的实战避坑技巧,涵盖从基础建模到高级边界条件设置的全流程。针对截面定义、节点创建、施工荷载区分等常见问题提供专业解决方案,帮助工程师避免计算误差,提升结构分析效率。特别强调施工阶段荷载与恒荷载的正确处理,以及弹性连接的合理应用。

weixin_30319153的博客 349

ANSYS Discovery 2023R1 保姆级教程:手把手教你玩转几何模型参数化(附避坑指南)

本文提供ANSYS Discovery 2023R1几何模型参数化的全面教程,涵盖基础环境搭建、核心操作解析及高级应用场景。重点讲解参数化建模中的常见问题与避坑方案,帮助用户高效掌握Workbench与Discovery的协同使用技巧,提升工程仿真效率。

weixin_29204205的博客 749

Scala函数

​//val maxF = max _的意思是将max函数赋值给名为maxF的变量,//但是在这里max后面添加了一个下划线 _,表示将函数的类型转换为函数值的类型​​/*1、两个值找最大值*/​/*2、取绝对值*/// -a中的-表示前缀操作符​/*3、找目标值在数组中的下标位置*/// 也是用递归,循环找数组中的值,index是数组下表// 调用loop时,将index设为0,1、从第一个数查,如果相等返回当前下标。

2301_79020421的博客 1353

银行数据仓库体系实践(3)--数据架构

狭义的数据仓库数据架构用来特指数据分布,广义的数据仓库数据架构还包括数据模型、数据标准和数据治理。即包含相对静态部分如元数据、业务对象数据模型、主数据、共享数据,也包含相对动态部分如数据流转、ETL、整合、访问应用和数据全生命周期管控治理。 数据架构层面通过数据分类、分层部署等手段,从非功能性视角将数据合理布局。通过整体架构管控和设计,支持业务操作类和管理分析类应用(系统),满足业...

acumen_leo的博客 7009

Scala函数式编程

函数定义的方式函数1:无参,无返回值函数2:无参,有返回值函数3:有参,无返回值函数4:有参,有返回值函数5:多参,无返回值函数6:多参,有返回值// 函数的定义x+y// 使用方法,类中的函数print(function.add("张三"))// 函数的定义方式// 无参,无返回值def add1(): Unit = print("这是无参,无返回值的函数")// 无参,有返回值def add():String= "这是无参,有返回值的函数"// 有参,无返回值。

weixin_57342469的博客 1441

门信号表达式_毫米波FMCW体制雷达的信号处理中的FFT等效为相干积累的解释

民用的77G或24G毫米波雷达目前普遍采用发射波形为一连串线性调频连续波(即所谓chirp信号,啁啾信号,线性调频波如果能够下变频到人耳可接收的频段,听起来很类似“啁啾”“啁啾”的鸟叫声)。一串前后相继的chirp信号与一段长时间的“空闲”组成一帧信号(比如汽车雷达整机厂普遍采用一帧为50ms)。用频谱仪观察chirp信号串,横坐标为时间,纵坐标为频率,如下图所示(此处引用TI产品手册...

weixin_39725756的博客 1948

一个代码循环计算水在石墨烯表面的接触角

石墨烯接触角

Rockyoung 2573

Scala 函数

scala定义函数的标准格式为: def 函数名(参数名1: 参数类型1, 参数名2: 参数类型2) : 返回类型 = {函数体} 函数示例1:返回Unit类型的函数 def shout1(content: String) : Unit = { println(content) } 函数示例2:返回Unit类型的函数,但是没有显式指定返回类型。(当然也可以返回非Unit类型的值) def shout2(content: String) = { println(content) } 函数示例3:返

栗筝i的博客 3434

鸿宇多用户商城user.php RCE漏洞复现

鸿宇多用户商城 user.php 存在任意命令执行漏洞,攻击者可通过该漏洞在服务器端任意执行代码,写入后门,获取服务器权限,进而控制整个web服务器。

0xSec 1621

scala 函数中嵌套函数_Scala函数–声明,定义,调用和嵌套函数

scala 函数中嵌套函数A function is a set of statements combined together to perform a specific task. The code can be divided logically into separate functions where each function is assigned a specific task. ...

从零开始的教程世界 1194

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

scala递归函数_Scala中的递归函数

scala递归函数 Scala中的递归函数 (Recursion function in Scala) Recursion function is a function that calls itself again and again until a specific condition becomes true. In functional programming, recursion pla...

cumtb2009的博客 1585

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

掌握Scala函数

如果在函数定义时,如果用到了上下文中的变量,则函数的具体执行将会和该变量的值具有了相关性,即这个函数包含了外部该变量的引用,这个过程称之为函数的闭包。这种情况下,变量值的变化将会影响函数的执行,同样函数执行的过程中改变了变量的值,也会影响其他位置对变量的使用。甚至在一些极端情况下,变量所在的环境已经被释放,但是由于函数中包含对它的引用,变量依然会存在,阻止了对象的释放,造成内存泄露的问题。使用下划线时,如果类型可以自动推断出,则不用声明类型,如果无法自动推断类型,则在下划线后自己来显式声明类型即可。

weixin_64272885的博客 411

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

scala函数参数

1、高级函数 把一个函数作为参数传递给另一个函数的方式,在函数式编程中称为高级函数。 //绝对值函数 def abs(n:Int)={ if(n<0) -n else n } //阶乘函数 def factorial(n:Int):Int={ def go(n:Int,acc:Int):Int= if(n<=0) acc else go(n-1,n*ac...

luoye4321的专栏 2438

scala函数

object ScalaFunction { def main(args: Array[String]): Unit = { // 1 将函数赋值给变量时, 必须在函数后面增加 空格和下划线 var zmHello = sayHello _ zmHello("zm") // 使用变量调用函数 /** * 2 匿名...

weixin_33895657的博客 213

Scala偏函数

函数名 含义和用法 isDefinedAt 判断传入来的参数是否在这个偏函数所处理的范围内,返回true或者false orElse 将多个偏函数组合起来使用,效果类似case语句 andThen 相当于方法的连续调用,比如g(f(x)), pf1的结果返回类型必须和pf2的参数传入类型必须一致,否则会报错。 applyOrElse 它接收2个参数,第一个是调用的参数,第二个是个回调函数。如果第一个调用的参数匹配,返回匹配的值,否则调用回调函数。 object P ext...

Drug discovery 8141

Scala 函数

函数是一组执行的语句。您可以将代码按功能分成一个个单独的函数。 如何在不同函数之间划分你的代码取决于你,但从逻辑上讲,通常每个函数执行一个特定的任务。 Scala具有两种函数,术语 - 方法和函数是可以互换的。 Scala方法是具有名称,签名,可选地一些注释和一些字节码的类的一部分,作为Scala中的函数是可以分配给变量的完整对象。 换句话说,定义为某个对象的成员的函数称为方法。 函数定义可以...

Simple 专栏 353

scala中匿名函数_Scala中的匿名函数

scala中匿名函数 Scala中的匿名函数 (Anonymous functions in Scala) A function with no name is an anonymous function which is also known as function literal. This type of functions is used when the user wants to cr...

cumtv80668的专栏 2956

Scala入门之函数编程

虽然Twiiter提供了中文版Scala教程:Scala 课堂,但是这只是一个参考书,并不适合Scala初学者,Scala与Java/C#不同特点是面向函数编程,这反映在语言上的不同点,具有Java或C#经验的程序员如果了解这个不同特点,也就是掌握了打开Scala语言大门的钥匙。   Scala的特点函数是第一等公民,而不是对象Object,函数可以作为方法参数传递,在Java中我们初学者经常要...

rryqszq4的专栏 200

scala中函数使用

1、定义一个函数为成员变量 val cook1 = (food1:String,food2:String)=&gt;{println("我要做"+food1+","+food2)} 2、把一个函数当做一个方法传入 1、方法cookHamburger,传入三个参数food1,food2,与一个函数cookMethod def cookHamburger(food1:String,food2...

starkpan的博客 279

【Scala】头等函数与函数即对象

头等函数Scala的函数是头等函数(first-class function)。你不仅可以定义和调用函数,还可以把它们写成匿名的字面量(literal),并把它们作为值传递。 函数字面量被编译进类,并在运行期实例化为函数值(function value)。什么意思呢?函数的本质是类的实例。函数是一些特质的集合,任何函数值都是某个扩展了scala包的若干FunctionN特质之一的类的实例,如Fun

Jason Ding的专栏 2560
上一篇: Scala -- 初识scala
下一篇: activemq 简单代码演示 和 安全认证设置
xiaoduup
博客等级 码龄9年 23粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值