目录

方法

定义方法

返回值类型推断


方法

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

定义方法

语法

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

[!NOTE]

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

示例

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

调用该方法

参考代码

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

返回值类型推断

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

[!DANGER]

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

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

示例

定义递归方法(求阶乘)

比如求10的阶乘

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

参考代码

scala> def m2(x:Int) = {| if(x<=1) 1| else m2(x-1) * x| }
<console>:13: error: recursive method m2 needs result typeelse m2(x-1) * x

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

  1. 2021年大数据常用语言Scala(十六):基础语法学习 列表 List 重点掌握

    目录 列表 List 重点掌握 不可变列表定义 可变列表 列表常用操作 列表 List 重点掌握 列表是scala中最重要的.也是最常用的数据结构.List具备以下性质: 可以保存重复的值 有先后顺序 ...

  2. 2021年大数据常用语言Scala(十四):基础语法学习 数组  重点掌握

    目录 数组  重点掌握 定长数组 变长数组 遍历数组 数组常用算法 数组  重点掌握 scala中数组的概念是和Java类似,可以用数组来存放一组数据.scala中,有两种数组,一种是定长数组,另一种 ...

  3. 2021年大数据常用语言Scala(三十四):scala高级用法 异常处理

    目录 异常处理 捕获异常 抛出异常 异常处理 Scala中 无需在方法上声明异常 来看看下面一段代码. def main(args: Array[String]): Unit = {val i = 1 ...

  4. 2021年大数据常用语言Scala(二十九):scala面向对象 单例对象

    目录 单例对象 定义object - 掌握 伴生对象 - 掌握 apply方法 - 掌握 main方法 单例对象 Scala中没有static关键字,但是它支持静态 如果要定义静态的东西,统统定义到o ...

  5. 2021年大数据常用语言Scala(四):基础语法学习 声明变量

    目录 声明变量 语法格式 在解释器中定义一个变量 val和var变量 使用类型推断来定义变量 惰性赋值 声明变量 我们将来每一天编写scala程序都会定义变量.那scala语言如何定义变量呢? 语法格 ...

  6. 2021年大数据常用语言Scala(三十一):scala面向对象 特质(trait)

    目录 特质(trait) 作为接口使用 定义具体的方法 定义具体方法和抽象方法 定义具体的字段和抽象的字段 实例对象混入trait trait调用链 trait的构造机制 trait继承class 特 ...

  7. 2021年大数据常用语言Scala(一):Scala简介

    目录 一.Scala简介 为什么使用scala Scala对比Java 案例 一.Scala简介 scala是运行在JVM上的多范式编程语言,同时支持面向对象和面向函数编程 多范式:就是包含多种编程思 ...

  8. 2021年大数据常用语言Scala(三十八):scala高级用法 隐式转换和隐式参数

    目录 隐式转换和隐式参数 隐式转换 自动导入隐式转换方法 隐式转换的时机 隐式参数 隐式转换和隐式参数 隐式转换和隐式参数是scala非常有特色的功能,也是Java等其他编程语言没有的功能.我们可以很 ...

  9. 2021年大数据常用语言Scala(三十六):scala高级用法 泛型

    目录 泛型 定义一个泛型方法 定义一个泛型类 上下界 协变.逆变.非变 非变 协变 逆变 泛型 scala和Java一样,类和特质.方法都可以支持泛型.我们在学习集合的时候,一般都会涉及到泛型. sc ...

  10. 2021年大数据常用语言Scala(二十八):scala面向对象 MAVEN依赖和类

    目录 scala面向对象 MAVEN依赖 类 - 掌握 创建类和对象 - 掌握 getter/setter - 了解 类的构造器 - 掌握 scala面向对象 MAVEN依赖 <?xml ver ...

最新文章

  1. 如何学习——为什么不想听课
  2. 如何查看tomcat是否安装成功_如何查看网站是否被收录?
  3. SpringBoot和MyBatis集成案例(学习笔记)
  4. workaround: 从product category移除settype时绕过check
  5. Java Swing –日期选择器对话框
  6. [react] 你有用过哪些React的UI库?它们的优缺点分别是什么
  7. C语言实现随机抽取纸牌
  8. JavaScript 已被淘汰?
  9. python导入datetime模块_Python时间模块datetime用法
  10. 领域(学科)知识图谱构建心得
  11. RadAsm:object file not found
  12. 乐橙tp1 html调用,乐橙TP1的妙用
  13. Turing GPU将如何彻底改变沉浸式AI
  14. Vue+Vuex+Axios+ECharts 画一个动态更新的中国地图
  15. 重装系统打开Unity编辑器弹窗:sentinel key not found(h0007)
  16. 为什么PHP项目运行报错502,php为什么会出现502错误
  17. OpenCV图像处理算法——7(《Contrast image correction method》 论文阅读及代码实现)
  18. 富集分析原理和clusterProfiler包进行GO、KEGG富集分析详细说明
  19. python正则表达式\d 匹配数字\D 匹配非数字\w 匹配单词\W 匹配非单词字符
  20. 计算机网络要点(第二章)

热门文章

  1. 【C#实践】详解三层转七层:登录
  2. 一篇文章告诉你标准化和归一化的区别?
  3. 条件随机场(CRF) - 4 - 学习方法和预测算法(维特比算法)
  4. LeetCode简单题之按奇偶排序数组 II
  5. CVPR2020:训练多视图三维点云配准
  6. 客快物流大数据项目(十五):DockeFile常用命令
  7. 2021年大数据Flink(二十):案例二 基于数量的滚动和滑动窗口
  8. linux ftp随机端口,linuxFTP生产环境配置
  9. java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
  10. Java 二进制,八进制,十进制,十六进制