美文网首页
第2课 Scala函数入门实战

第2课 Scala函数入门实战

作者: flyskyzyl | 来源:发表于2016-04-27 22:08 被阅读0次

函数示例

函数的定义使用def关键字,并且函数体最后有返回值。

//声明了一个函数f3,两个参数:param1是String类型,param2为Int类型。param2默认值为30,因为有了默认值,那么在调用上可以不传param2。

scala>deff3(param1:String, param2:Int=30) = param1 + param2

f3: (param1: String, param2: Int)String

//调用函数f3,传入第一个参数param1值为Spark,没有传入第二个参数,默认为30。

scala> f3("Spark")

res4: String = Spark30

//带名参数调用,即在函数调用时,显示指定参数名,并不按顺序传入。

scala> f3(param2=100, param1="Scala")

res5: String = Scala100

//变长参数, 定义了一个sum函数,参数numbers是变成参数,即传入的Int变量个数不定。在函数体中,对传入的全部Int变量进行循环遍历并累计求和,最后把结果返回。

scala> def sum(numbers:Int*)={var result=0;   for(element<-numbers) result +=element; result}

sum: (numbers: Int*)Int

scala> sum(1,2,3,4,5,6,7,8,9,10)

res1: Int = 55

//下面示例是一个非常经典的语法

scala> sum(1 to 10: _*)// _* 表示提取里面的每个元素, 然后作为变长参数传递

res3: Int = 55

过程

没有返回值的函数就是过程。

//这是一个函数

scala> def morning(content:String) = "Good" + content

morning: (content: String)String

//这是一个过程

scala> def morning(content:String) { println( "Good" + content)}

morning: (content: String)Unit

//强制声明一个过程

scala> def morning(content:String):Unit=  "Good" + content

morning: (content: String)Unit

声明lazy类型

scala> import scala.io.Source._//导入引用库

import scala.io.Source._

//声明一个lazy类型的变量content,打开一个不存在的文件。

scala> lazy val content = fromFile("/root/txt")

content: scala.io.BufferedSource = 

以上示例执行不会出错,表明content变量并没有执行。

//如果去掉lazy关键字,那么会出错,提示文件不存在。

scala> val content = fromFile("/root/txt")

java.io.FileNotFoundException: /root/txt (No such file or directory)

at java.io.FileInputStream.open0(Native Method)

at java.io.FileInputStream.open(FileInputStream.java:195)

at java.io.FileInputStream.(FileInputStream.java:138)

耗时的操作,在大型分布式系统中,比较常见。声明lazy类型的变量,在需要的时候才去执行。

异常

//首先导入相关引用包

scala> import java.io._

import java.io._

scala>

//示例打开一个存在的文件,使用try…catch捕获异常

scala> try{

|     val content = fromFile("/root/.bashrc").mkString

| }catch{

|     //case是一个偏函数

|     case _: FileNotFoundException => println("Oh, file not found!")

| }finally{

|     println("Ok!")

| }

Ok!

scala>

//示例打开一个不存在的文件,使用try…catch捕获异常

scala> try{

|     val content = fromFile("/root/.bashrc111").mkString

| }catch{

|     //case是一个偏函数

|     case _: FileNotFoundException => println("Oh, file not found!")

| }finally{

|     println("Ok!")

| }

Oh, file not found!

相关文章

  • 第2课 Scala函数入门实战

    函数示例 函数的定义使用def关键字,并且函数体最后有返回值。 //声明了一个函数f3,两个参数:param1是S...

  • Scala学习笔记02_函数入门

    函数入门 函数的定义与调用,在Scala中定义函数时,需要定义函数的函数名、参数、函数体。 Scala要求必须给出...

  • Spark技术实战之基础篇

    Spark技术实战之基础篇 -Scala语言从入门到精通为什么要学习Scala?源于Spark的流行,Spark是...

  • Scala 入门

    1 函数式编程思想 1.1 介绍 1.2 scala函数式编程思想 2 环境搭建 3 实战 4 变量 函数 函数定...

  • Spark案例

    Spark 实战,第1 部分: 使用Scala 语言开发Spark 应用程序 Spark 实战, 第 2 部分:使...

  • Scala(三)-①-函数式编程和异常

    入门Scala(三)-① 函数式编程和异常 函数式编程 ① Why-为什么我们要学函数式编程.这种范式的目的 无目...

  • Scala学习笔记

    1 Scala入门 scala Hello World Scala变量 Scala变量 Scala字符串 Scal...

  • 第三讲函数详解

    Scala被认为是函数式编程语言,故Scala函数是Scala编程的核心。所以掌握scala的函数至关重要。 本章...

  • Scala函数式编程(三) scala集合和函数

    前情提要: scala函数式编程(二) scala基础语法介绍 scala函数式编程(二) scala基础语法介绍...

  • Scala笔记

    Scala基础 学习twitter的scala教程的笔记 函数 函数定义,scala语法中可以使用多种方式定义函数...

网友评论

      本文标题:第2课 Scala函数入门实战

      本文链接:https://www.haomeiwen.com/subject/ufncrttx.html