[原创]Scala学习:函数的定义

方式一:标准的定义函数
  def 函数名(参数1: 参数类型,参数2: 参数类型): 返回值类型 = {
      函数体
  }

例子
  def max(x: Int,y: Int): Int ={
      if(x > y) x
      else y
  }

注意:参数列表中必须标注好参数类型,因为scala编译器无法推断参数的类型

方式二:在一般的情况下可以省略,函数返回值的类型
  def 函数名(参数1: 参数类型,参数2: 参数类型) = {
      函数体
  }

  def max(x: Int,y: Int)={
    if(x > y) x
    else y
  }
或者 将大括号也可以省略
  def max(x: Int,y: Int) = if(x > y) x else y

注意:在函数递归的时候,必须指明返回值的类型

方式三:既不带参数也不带返回值有用结果的定义函数

  scala> def greet() = println("hello world")
  greet: ()Unit
  Unit是函数greet的记过类型,指的是函数没有有效的返回值,scala中的Unit类型比较于java中的viod类型,而实际上java中返回void的方法都会被映射为返回Unit的scala方法
  结果类型为Unit的方法,并非是为了得到返回值,而是为了其他的运行效果(side effect)

时间: 2025-01-18 13:05:52

[原创]Scala学习:函数的定义的相关文章

[原创]Scala学习:数组的基本操作,数组进阶操作,多维数组

1.Scala中提供了一种数据结构-数组,其中存储相同类型的元素的固定大小的连续集合.数组用于存储数据的集合,但它往往是更加有用认为数组作为相同类型的变量的集合 2 声明数组变量: 要使用的程序的数组,必须声明一个变量来引用数组,必须指定数组变量可以引用的类型.下面是语法声明数组变量: var z:Array[String] = new Array[String](3) or var z = new Array[String](3) or var z = Array("Zara", &

[原创]Scala学习:for,function,lazy

1.for循环是一个循环控制结构,可以有效地编写需要执行的特定次数的循环.Scalar的循环说明如下的各种形式: 1)Scala中for循环最简单的语法是: for( var x <- Range ){ statement(s); } 在这里,范围可能是一个数字范围,并且表示为i到j或有时像i到j左箭头 < - 操作者被称为生成器,这样命名是因为它是从一个范围产生单个数值. 2)for循环中,循环将遍历给定范围内的所有可能的计算,可以使用分号 (;) 分隔多个范围.下面是使用两个范围的例子,也

[原创]Scala学习:关于变量(val,var,类型推断)

1.常量定义:  val val 类似于java中的final变量.一旦初始化了,val就不能再被赋值 val megs = "hello world" 2.变量的定义: var var 如同java里面的非final变量,可以在它的声明周期内多次被赋值 var spark:String = " i am big data " var spark: String = " i am" 解释器中支持table键 补充和提示 3.变量类型推断: 当分配

[原创]Scala学习:Tuple,Array,Map ,文件操作

1.Tuple:元祖.是一个有用的容器对象. 1)特点:  ① 元祖是不可变的,即,当声明完了一个元祖,那么它的长度就不可以在改变:  ② 元祖可以包含不同类型的数据,对象:   ③ 索引是从 '_1' 开始,读取元祖中的内容 ④标识:' () ' 2)代码 1 //元祖 2 def doTuple() { 3 //'()' 定义元祖 4 val pair = (100, "scala", "spark") //元祖的类型val pair: (Int, String

[原创]Scala学习:编写Scala脚本

scala支持脚本 1)在/opt/scala-script下创建一个文件hello.scala 编辑内容如下: $ hello ,this is the first scala script 2)运行脚本 scala脚本的命令行参数保存在名为args的scala数组中.scala里,数组以0开始,可以通过在括号里指定索引值来访问数组元素.scala里数组 args 的第一个元素是:args(0),而不是像Java那样的:args[0].现在,把以下内容写到新文件: HelloWithArgs.

[原创]Scala学习:流程控制,异常处理

1.流程控制 1)do..while 1 def doWhile(){ 2 var line="" 3 do{ 4 line = readLine() 5 println("readlineConetent" + line ) 6 }while(line != " ") 7 } 2)for 方式一: 1 for (arg <-args) 2 println(arg) 方式二: 1 for (i <- 1 to 10 if i % 2

Scala学习笔记一之基础语法,条件控制,循环控制,函数,数组,集合

前言:Scala的安装教程:http://www.cnblogs.com/biehongli/p/8065679.html 1:Scala之基础语法学习笔记: 1:声明val变量:可以使用val来声明变量,用来存放表达式的计算结果,但是常量声明后是无法改变它的值的,建议使用val来声明常量: 声明var变量:如果要声明可以改变的引用,可以使用var变量,声明的常量的值可以改变. 3:指定类型:无论声明val变量还是声明var变量.都可以手动指定其类型,如果不指定,scala会自动根据值,进行类型

Scala学习-变量常量、运算符、流程控制和函数

scala是马丁.奥德斯克设计的,专门为程序员设计,广泛应用于大数据的语言.它同时支持面向对象和面向函数编程,运行scala需基于JVM,使用它需要提前安装好JDK和scala SDK.scala的的代码一行可以顶多行java代码,开发效率高,并且兼容java类库,scala编译完也是.class文件.另外大数据框架kafka和spark是基于scala开发的,因此想做流处理需要学习scala. 基本数据类型 scala中没有基本类型的说法,绝大多数类型(类似java类型)都封装成了类,以下是它

scala学习手记29 - 偏应用函数

调用函数可以说成是将函数应用于实参.如果传入所有的预期的参数,就完全应用了这个函数.如果只传入几个参数,就会得到一个偏应用函数. 偏应用函数是一个特殊的概念,在scala中它是使用val定义的,但是在使用时它却更像是一个函数.偏应用函数的定义更接近于python中有默认值的函数(scala实在是和python有太多相似的地方了). 先来看一个例子: import java.util.Date def log(date: Date, message: String) { //... println