2021年大数据常用语言Scala(十):基础语法学习 方法

举报
Lansonli 发表于 2021/09/28 00:27:12 2021/09/28
【摘要】 目录 方法 定义方法 返回值类型推断 方法 一个类可以有自己的方法,scala中的方法和Java方法类似。但scala与Java定义方法的语法是不一样的。 定义方法 语法 def methodName (参数名:参数类型, 参数名:参数类型) : [return&nbs...

目录

方法

定义方法

返回值类型推断


方法

一个类可以有自己的方法,scala中的方法和Java方法类似。但scala与Java定义方法的语法是不一样的。

定义方法

语法

def methodName (参数名:参数类型, 参数名:参数类型) : [return type] = {
    // 方法体:一系列的代码
}

[!NOTE]

  • 参数列表的参数类型不能省略(因为之前定义变量的时候可以省略, 这里不要混淆了,因为变量给了初始值,可以根据初始值推断类型)
  • 返回值类型可以省略,由scala编译器自动推断
  • 返回值可以不写return,默认就是{}块表达式的值

 

示例

定义一个方法,实现两个整形数值相加,返回相加后的结果

调用该方法

 

参考代码


  
  1. scala> def add(a:Int, b:Int) = a + b
  2. m1: (x: Int, y: Int)Int
  3. scala> add(1,2)
  4. res10: Int = 3

 

返回值类型推断

scala定义方法可以省略返回值,由scala自动推断返回值类型。这样方法定义后更加简洁。

[!DANGER]

定义递归方法,不能省略返回值类型

因为, 递归调用是一层一层向内走, 当前那一层无法推断返回类型, 会导致一系列问题.

 

示例

定义递归方法(求阶乘)

比如求10的阶乘

10 * 9 * 8 * 7 * 6 * ... * 1

 

参考代码


  
  1. scala> def m2(x:Int) = {
  2.      if(x<=1) 1
  3.      | else m2(x-1) * x
  4.      | }
  5. <console>:13: error: recursive method m2 needs result type
  6.        else m2(x-1) * x

 

文章来源: lansonli.blog.csdn.net,作者:Lansonli,版权归原作者所有,如需转载,请联系作者。

原文链接:lansonli.blog.csdn.net/article/details/116430341

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。