高级程序语言设计中定义函数的方法有哪几种?分别为什么?

2020-04-08 11:07发布

2条回答
爱梦 - 拿来吧你
2楼 · 2020-09-09 09:37

第一种,比如C语言的函数

函数返回类型函数名(参数类型 参数, ....){

_____函数体

}

第二种,比如lua的函数

函数关键字 函数名(参数,...)

_____函数体

结束关键字

第三种,匿名函数(无函数名)

变量 = 函数关键字(参数,...)

_____函数体

结束关键字

第四种,汇编中的函数

开始关键字 函数名

_____函数体

结束关键字

第五种,比如Pascal中的函数

函数关键字 函数名(参数,...)

变量声明关键字 变量声明体

函数开始关键字

_____函数体

结束关键字


我是大脸猫
3楼 · 2021-12-17 10:13

scala是面向对象的语言,同时也是函数式编程语言。函数在scala中是一等公民,它和变量一样,既可以作为其他函数的参数,也可以将函数赋值给一个变量。

    在scala中定义函数有很多方式,不熟悉scala的同学初看之时难免被搞得晕头转向。这里,我试图按照函数是否有返回值来总结一下函数定义的规律,仅供参考。

    一、有返回值的函数定义:

    1、标准形式(就是函数形参,返回类型,return语句全有)

    def addInt(a:Int, b:Int):Int = {

        var total:Int = a + b

        return total

    }

    括号里是形参,冒号后面是返回类型,大括号里是函数体。

    注意,有返回值的函数定义在大括号前必须有等号,不能省略。

    2、省略返回类型和return

    当有返回值的时候,可以不显式写出返回类型,scala会自动判断。同时return也可以省略。上面的函数可以简写成:

    

    def addInt(a:Int, b:Int) = {

        a + b

    }

    scala自动返回函数体中最后一个表达式的值并判断类型。这里再多说一句,在java中例如x=1这样的表达式返回的是1,而在scala中赋值语句返回的是空值。所以,如果你想返回值,不要以赋值语句作为最后一条语句。

    3、省略大括号

    当函数体只有一行语句的时候,可以省略大括号。上面的函数可以再简写成:

    def addInt(x:Int, y:Int)  = a + b

    怎么样,是不是比java简洁很多。

    上面3种情况是有返回值的,下面说说无返回值的,更简单。

    二、无返回值的函数定义

    1、显式标识无返回值

    def retrunNone(a:Int,b:Int):Unit = {

        print(a + b)

    }

    Unit关键字表示函数无返回值。

  2、省略Unit

    和有返回值类似,这里也可以省略Unit,让scala自己去知道这个函数无返回值。那么它是怎么知道的呢?就是省略等号。当函数定义没有等号的时候,scala认为这个函数无返回值。

   

    def retrunNone(a:Int,b:Int){

        print(a + b)

    }

    最后,我们说说也是经常会看到的一种函数定义——匿名函数。

    匿名函数顾名思义,就是没有名字的函数。它可以作为函数的参数,也可以直接赋值给变量。

    val addInt = (x:Int,y:Int)=> x + y  //将一个函数赋值给变量,调用的时候addInt(1,2)

    def myFun(f : (Int,Int) => Int, x:Int, y:Int) = f(x,y) 

    上面这个函数定义了一个匿名函数作为函数的参数,这个匿名函数有两个Int的参数,返回类型是Int。

    调用的时候我们可以将任何满足匿名函数条件的函数传入,比如addInt。

    那么就是myFun(addInt, 1, 2),返回的是3。

    好了,函数定义就先说这么多,欢迎关注后续文章。


相关问题推荐

  • 回答 26

    1、学习一款新的软件,我们要知道软件的布局,以及各个功能,面板等等。这个部分是最容易的,只要仔细熟悉界面,记住就ok了。2、掌握软件基础功能之后,就开始运用于基础的操作,继续深化掌握软件。这个过程也不是很难,基础工具掌握之后,基础的图像操作以及...

  • 回答 5

    电商架构一般是JAVA 跟PHP,JAVAEE构建大型电商网站更稳定 安全 。但是开发成本高,PHP则更快

  • 回答 1
    已采纳

    字面翻译是内核的安全检查失败。是有驱动或者安全软件,直接介入内核层导致的吧?装了什么软件?或者第三方修改的驱动?

  • 回答 11
    已采纳

    《Java基础入门(第2版)》出版社:清华大学出版社这本书在第一版的基础上进行的升级,增加了很多重要知识点的原理剖析。很适合新手打基础用,因为很多高效也用第一版本作为教材的。内涵比较多的知识点案例,还充分的考虑到了学生对Java相关知识点的底层原理...

  • 回答 5

    一、IE浏览器设置代理IP  IE浏览器无疑是最常用的浏览器,而像360浏览器、搜狗浏览器、QQ浏览器这样的浏览器都是基于IE内核开发的浏览器,设置代理IP的方法也大同小异。  1、IE浏览器上选择工具——Internet选项——连接——局域网设置。  2、在局域网...

  • 回答 28

    平面构成理论解决图案问题,色彩构成理论解决配色问题,立体构成理论解决造型问题。

  • 回答 12

    那基本上是没有太大的希望,就像是你问小学生能不能学习线性代数差不多儿,的确有学会的,但是数量肯定是特别少

  • 回答 9

    可以学python

  • 回答 6

    有的 具体的可以咨询一些培训机构的客服哦~

  • 回答 3

    商业模式解析——韩都衣舍的海星模式什么是海星模式?韩都衣舍的老板,先到韩国一口气谈了200多个服装品牌做代理。回国后他并没有选择自己卖,而是到大学招聘创业者。要求是每三个大学生组成一个创业团队(1个美工,1个商务,1个客服),也就是一个网店的基本...

  • 回答 8
    已采纳

    互联网+社区,或者说互联网+x这种概念最近才是真正的风口浪尖,还是刀尖那种。不像前几年,概念一处,几乎所有人都嗅到了肉味,力争分一杯羹。最近的卖菜事件让人们开始真正的审视问题的所在,互联网+x最后都会发展成寡头垄断,服务没提高多少,价格却居高不...

  • 回答 8

    1.java基础2.JSP+Servlet+JavaBean 这个环节主要是懂流程的3.Struts+Hibernate+Spring这个是开发的主流技术 把每个都搞清楚 哪个框架是什么层的4.Ajax(最好学学 很多公司都注重这个)

  • 回答 6

    是算法

没有解决我的问题,去提问