scala 学习笔记(01) 函数定义、分支、循环、异常处理、递归
时间:2022-04-22
本文章向大家介绍scala 学习笔记(01) 函数定义、分支、循环、异常处理、递归,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
package yjmyzz
import scala.io.StdIn
object ScalaApp {
def main(args: Array[String]) {
println("please input something,press Enter to exit:") //每一行最后加不加分号都可以
readKeyboard //注:无参数的函数调用,加不加括号都行
println(add(1, 2) + "n------n")
println(div(1, 2) + "n------n")
println(div(1, 0) + "n------n")
println("5!=" + factorial(5) + "n------n")
println("-1!=" + factorial2(-1) + "n------n")
println("5!=" + factorial2(5) + "n------n")
}
/**
* 键盘读取示例(无返回值)
*/
def readKeyboard() {
//注:无返回值,即相当于返回值为Unit,所以上面的方法声明也可以写成
// def readKeyboard(): Unit = {
var line = StdIn.readLine()
while (line != "") {
println("you just input the : " + line)
line = StdIn.readLine()
}
println("byen")
}
/**
* 整数加法(带返回值示例)
* @param x
* @param y
* @return
*/
def add(x: Integer, y: Integer): Integer = {
print(x + " + " + y + " = ")
x + y //返回值,连return都不用加,十分简洁
}
/**
* 异常处理示例
*/
def div(x: Long, y: Long): Double = {
var hasError = false
try {
if (y.equals(0L)) throw new RuntimeException("divide by zero") else x.toDouble / y
}
catch {
case e: Exception => {
hasError = true
println("error:" + e.getMessage())
Double.MinValue
}
}
finally {
if (hasError) println("finished , but there has a error") else println("finished")
}
}
/**
* 递归示例
* @param x
* @return
*/
def factorial(x: Integer): Long = {
if (x.equals(0)) 1 else x * factorial(x - 1)
}
/**
* 演示for循环
* @param x
* @return
*/
def factorial2(x: Integer): Long = {
if (x <= 0) return 1 //注:加return后,下面的代码就不执行了
println("test")
var temp = 1L
for (i <- 1 to x) {
temp = temp * i
}
temp
}
}
从语法风格上看,确实比java简洁无数,有那么一丁点javascript的味道。
函数定义,除了用正式的def来定义外,还可以"匿名"定义,比如下面这样:
var add = (a: Integer, b: Integer) => a + b //是不是有点c#中匿名方法和lambda的味道了:)
println(add(1, 2))
对于无参函数,可以做为另一个函数的参数
def oneFunc = {
println("one func")
}
/**
* 无参函数,可以直接作为另一个函数的参数(有点象c#中的委托)
* @param a
*/
def twoFunc(a: Unit) = {
a
println("two func")
}
//调用示例
twoFunc(oneFunc)
for循环还可以写得更强大:
def forDemo = {
for (x <- 1 to 2; y <- 3 to 4) println("x=" + x + ",y=" + y)
println
//上面的写法,等效于下面的写法
for (x <- 1 to 2)
for (y <- 3 to 4)
println("x=" + x + ",y=" + y)
println
//带条件的for循环(打印10以内的偶数)
for (i <- 1 to 10; if i % 2 == 0) println(i)
}
- 使用 zipfile 解压含有中文文件名的 zip 文件
- qsc oj 22 哗啦啦村的刁难(3)(随机数,神题)
- [快学Python3]数据结构与算法-二分查找
- [快学Python3]数据结构-队列
- 51Nod 1090 3个数和为0(暴力)
- qscoj 128 喵哈哈村的魔法源泉(2)(模仿快速幂,好题)
- POJ 3624 Charm Bracelet(01背包裸题)
- 2015 计蒜之道 初赛(4)爱奇艺的自制节目(枚举 贪心)
- Codeforces 810C Do you want a date?(数学,前缀和)
- [快学Python3]数据结构-堆栈
- [快学Python3]PyMySQL库
- [快学Python3]SMTP发送邮件
- Educational Codeforces Round 21 D.Array Division(二分)
- Playrix Codescapes Cup (Codeforces Round #413, rated, Div. 1 + Div. 2)(A.暴力,B.优先队列,C.dp乱搞)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【LeetCode】从尾到头反过来返回每个节点的值(用数组返回)day03
- mybatis文件映射之利用association进行关联查询(二)
- 【JUC】CountDownLatch你真的了解吗?
- mybatis动态sql之foreach补充(一)
- 【LeetCode】把字符串 s 中的每个空格替换成““%20””day02
- bert加载数据代码
- python爬虫--看看虎牙女主播中谁颜值最高
- 基于maven+ssm的增删改查之maven环境的搭建
- (22)Bash环境变量
- maven之在eclipse中创建maven项目
- wiki百科之将词转换为索引表示
- 【LeetCode】找出数组中重复的数字day01
- pytorch实现的transformer代码分析
- 终于搞懂HashMap的源码了!!!
- (21)Bash用户自定义变量