前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2021年大数据常用语言Scala(十):基础语法学习 方法

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

作者头像
Lansonli
发布2021-10-11 11:28:41
2570
发布2021-10-11 11:28:41
举报
文章被收录于专栏:Lansonli技术博客Lansonli技术博客

方法

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

定义方法

语法

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

[!NOTE]

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

示例

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

调用该方法

参考代码

代码语言:javascript
复制
scala> def add(a:Int, b:Int) = a + b
m1: (x: Int, y: Int)Int

scala> add(1,2)
res10: Int = 3

返回值类型推断

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

[!DANGER]

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

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

示例

定义递归方法(求阶乘)

比如求10的阶乘

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

参考代码

代码语言:javascript
复制
scala> def m2(x:Int) = {
     | if(x<=1) 1
     | else m2(x-1) * x
     | }
<console>:13: error: recursive method m2 needs result type
       else m2(x-1) * x
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/05/05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 方法
    • 定义方法
      • 返回值类型推断
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档