scala教程(二) 函数
1.这是scala基础系列教程,适合入门者学习。
2.函数
定义函数
//没有返回值的函数,Unit 类似void
def error1(msg:String): Unit = {println(msg)
}// 类似上面的简写方式: 去掉Unit
def error2(msg:String){println(msg)
}//类似上面的简写方式: 去掉函数括号
def error3(msg:String)=println(msg)//带默认值
def error4(msg:String="我是默认值")=println(msg)
可变参数
def sum(nums:Int*)={var sum = 0for(i <- nums){sum += i} // 这里是函数返回sumsum}
// 调用 求1 到10 的和println(sum(1,2,3,4,5,6,7,8,9,10))
匿名函数
格式: val 变量名 = (参数:类型) => 函数体
var p = (msg:String) => println(msg)p("调用匿名函数")
高阶函数: 用函数作为形参或带返回值的函数
下面是参数是函数的例子:
// 定义一个 匿名函数
var pFun = (msg:String)=>println(msg)// 定义一个高阶函数
// 第一个参数为函数: p:(String)=>Unit 是函数的形式声明(p函数名,一个String类型参数,无返回值)
//第二个参数为普通变量参数:
def test(p:(String)=>Unit , msg:String)=p(msg)// 调用高阶函数
test(pFun,"高阶函数")
下面是返回值是函数的例子:
// 定义一个匿名函数
var pFun = (a:Int,b:Int)=>a+b// 定义一个高阶函数
// 返回值为函数: (Int,Int)=>Int 是函数的形式声明(有两个Int参数,返回值是Int)
// =号 后面的 就是具体的函数
def sum():(Int,Int)=>Int = pFun//调用函数 ,求5 和8 的和
sum()(5,8)
Scala 函数柯里化
//普通函数定义
def add(x:Int,y:Int)=x+y
//换成柯里化 定义
def add2(x:Int)(y:Int)= x +y
//柯里化调用 (打印5和7的和)
println(add2(5)(7))
函数就到这里,谢谢观看
老生常谈:深圳有爱好音乐的会打鼓(吉他,键盘,贝斯等)的程序员和其它职业可以一起交流加入我们乐队一起嗨。我的QQ:657455400 表演视频实例:https://v.qq.com/x/page/f0517awx0x4.html
scala教程(二) 函数相关推荐
- scala 定义空list_四十二、Scala 教程: List(列表)
列表 Scala 列表 有点像 数组, 因为他们都是有序存储结构,而且所有元素的类型都一样,但它又不同于数组 1. 列表(List)一旦被创建就不能改变其中的元素. 2. 列表(List)底层的数据结 ...
- scala初学之函数定义、流程控制、异常处理入门
特此声明,本文中的代码 部分或全部来源王家林的scala教程:虽然王家林一直被大家所诟病,而且也无法确定这些scala的程序代码是不是他的.但是作为一个初学者觉得就算代码不是他的,他只是拿过来翻译一次 ...
- 尚硅谷大数据技术Scala教程-笔记04【集合】
视频地址:尚硅谷大数据技术之Scala入门到精通教程(小白快速上手scala)_哔哩哔哩_bilibili 尚硅谷大数据技术Scala教程-笔记01[Scala课程简介.Scala入门.变量和数据类型 ...
- Scala函数式编程(三) scala集合和函数
前情提要: scala函数式编程(二) scala基础语法介绍 scala函数式编程(二) scala基础语法介绍 前面已经稍微介绍了scala的常用语法以及面向对象的一些简要知识,这次是补充上一章的 ...
- Java 结构体之 JavaStruct 使用教程二 JavaStruct 用例分析
使用环境 前一篇在介绍 JavaStruct 类时指定了使用库使用环境为 Java 5 及以上,也即开发我们使用的 JDK 版本为1.5及以上就可以了.以下讲解的用例可以直接将 code 直接粘贴到 ...
- MongoDB 教程二: 添加, 删除,查询 shell命令
视频:MongoDB 教程二: 添加, 删除,查询 shell命令 MongoDB Shell 常用操作命令 MonoDB shell命令操作语法和JavaScript很类似,其实控制台底层的查询 ...
- 区块链教程(二):基础概念介绍
注:本教程为技术教程,不谈论且不涉及炒作任何数字货币 本系列重点在于以太坊基础知识.以太坊客户端以及以太坊solidity编程,因此博客重点在于以太坊核心知识点的掌握,区块链部分的基础知识可以作为补充 ...
- scala基础之函数和闭包
一 函数的类型 1.1 不带返回值的类型 def sayHello() { println("hello") } # Unit 和 java的返回值类型void是一样的 d ...
- R语言七天入门教程二:认识变量与运算符
R语言七天入门教程二:认识变量与运算符 一.什么是变量 1.变量 顾名思义,我们可以将变量理解为"可以改变的量",是计算机语言中能储存计算结果或能表示值的抽象概念.这里的值可以是数 ...
- 【Visual C++】游戏开发五十六 浅墨DirectX教程二十三 打造游戏GUI界面(一)
本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/16384009 作者:毛星 ...
最新文章
- Linux中的无人职守安装脚本kickstart
- Php使用selenium爬虫,selenium,python爬虫_使用selenium爬取网站时输出结果不正确,selenium,python爬虫 - phpStudy...
- Windows 之 win10快捷键
- ROS系统 常用可视化工具的使用
- 实战SSM_O2O商铺_24【商铺列表】View层开发
- java动态生成柱状图3D_在android上动态实现ichartjs的3D柱形图
- Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC
- iOS7应用开发5、视图控制器View Controller及其生命周期
- php安装好wampserver后出现的问题
- UVa 10066 - The Twin Towers(LCS水题)
- Hat’s Words (分成两个字符串考虑)
- java biginteger相比_java Biginteger类
- 从终端直接下载cuDNN
- jstl标签中的fn与fmt标签的用法
- “刀片嗓”“水泥鼻”“咳出肺”可以这样缓解!
- selenium自动化测试随笔,安装selenium
- MP4视频文件过大压缩的技巧是什么?简单步骤讲解
- 阿里云99/年 189/2年 279/3年
- 超声换能器的主要性能指标
- 软件测试工程师的核心竞争力是什么?