Scala 方法和函数
package com.bigdata //
/** Scala 方法和函数:Scala中既有函数也有方法,大多数情况下我们都可以不去理会他们之间的区别。
*
* 方法:Scala 中的方法跟 Java 的方法一样,只是多了点语法糖。
* 方法是组成类的一部分。方法有名字、类型签名,有时方法上还有注解,以及方法的功能实现代码(字节码)。
*
* 函数 :Scala 中的函数是一个完整的对象,是基于Function家族,0-22,一共23个Function Trait可以被使用,数字代表了Funtcion的入参个数
* 作用:1.函数可以直接赋值给变量,可以让函数很方便的传递;
* 2.闭包(closure),可以把灵活操作代码块,从而引申出其他灵活的语法
*
* apply 是 scala 中的语法糖:对一个对象 obj 上调用 obj(),scala 编译器会转换为 obj.apply();
* 在一个类 clazz 上调用 clazz(),scala 编译器会转换为 clazz_company_obj.apply(),其中 clazz_company_obj 为 clazz 的伴生对象。
*
* 方法和函数的区别:
* 1.方法不能作为单独的表达式而存在(参数为空的方法除外),而函数可以
* 2.函数必须要有参数列表,而方法可以没有参数列表
* 3.方法名是方法调用,而函数名只是代表函数对象本身+--
* 4.在需要函数的地方,如果传递一个方法,会自动进行ETA展开(把方法转换为函数)
* 5.传名参数本质上是个方法
*
*/ object Func { //比如无参方法在申明时可以不加括号,甚至在调用过程也不用加括号
def f1 = 1 + 1 //比如方法可以添加泛型规则,这在java中只能在类申明
def f2[T](t: T) = {
t
} //本地方法,即方法中嵌套方法
def method(): Unit = {
def print(str: String): Unit = {
println(str)
} print("hello")
} //一般采用下面方式定义函数
val fun = (v1: Int, v2: Int) => v1 + v2 def main(args: Array[String]): Unit = {
println(f1)
println(f2(1))
method val s1 = fun(1,2)
println(s1) } }
Scala 方法和函数的更多相关文章
- Scala 方法与函数
Scala 方法与函数:http://www.runoob.com/scala/scala-functions.html Scala 有方法与函数,二者在语义上的区别很小.Scala 方法是类的一部分 ...
- Scala 方法与函数简单记录
/** * Scala 方法与函数 * Scala 有方法与函数,二者在语义上的区别很小.Scala 方法是类的一部分,而函数是一个对象可以赋值给一个变量.换句话来说在类中定义的函数即是方法 */ o ...
- Scala语言学习笔记——方法、函数及异常
1.Scala 方法及函数区别 ① Scala 有方法与函数,二者在语义上的区别很小.Scala 方法是类的一部分,而函数是一个对象可以赋值给一个变量.换句话来说在类中定义的函数即是方法 ② Scal ...
- Scala方法定义,方法和函数的区别,将方法转换成函数
1. 定义方法和函数 1.1. 定义方法 方法的返回值类型可以不写,编译器可以自动推断出来,但是对于递归函数,必须指定返回类型 1.2. 定义函数 1.3.方法和函数的区别 在函数式编程语言中,函数是 ...
- scala 学习笔记二 方法与函数
1.介绍 Scala 有方法与函数,二者在语义上的区别很小.Scala 方法是类的一部分,而函数是一个对象可以赋值给一个变量.换句话来说在类中定义的函数即是方法. Scala 中的方法跟 Java 的 ...
- scala流程控制语句以及方法和函数
1.if else表达式 scala中没有三目运算符,因为根本不需要.scala中if else表达式是有返回值的,如果if或者else返回的类型不一样,就返回Any类型(所有类型的公共超类型). 例 ...
- Scala基础:定义变量和逻辑判断语句以及方法和函数
定义变量和逻辑判断语句 package com.zy.scala import scala.collection.immutable object ScalaDemo { def main(args: ...
- Scala学习笔记(三)—— 方法和函数
1. 方法 方法使用 def 定义: def 方法名(参数名:参数列表,…) :返回值类型 = { 方法结构体 } scala> def add(x : Int ,y : Int):Int = ...
- 第1节 Scala基础语法:5、6、7、8、基础-申明变量和常用类型,表达式,循环,定义方法和函数
4. Scala基础 4.1. 声明变量 package cn.itcast.scala object VariableDemo { def main(args: Array[Strin ...
随机推荐
- redis 数据淘汰策略与配置
redis 数据淘汰策略 volatile-lru:从已设置过期的数据集中挑选最近最少使用的淘汰volatile-ttr:从已设置过期的数据集中挑选将要过期的数据淘汰volatile-random:从 ...
- Linux(CentOS)之-性能监控
这篇主要讲一下Linux(CentOS)上性能性能监控的操作. 1.监控cpu使用情况--uptime 该命令将会打印出当前时间 系统运行了多久 当前登陆用户数 系统平均负载 这里的负载是单位时间 ...
- 前端HTML空格与后台PHP utf-8空格
今天在处理html input输入框时,发现一个问题: 在用户名输入框中输入admin "'p(中间是一个空格),点保存后台提示数据保存成功,按理应该是未修改,通过chrome调试工具发现传 ...
- 回归JavaScript基础(四)
主题:JavaScript变量.作用域和内存问题 JavaScript的变量和别的语言比起来是与众不同的.说道变量,不得不谈他的作用域.同很多语言一样,JavaScript开发者也不用担心开发中内存的 ...
- 灰度图的直方图均衡化(Histogram Equalization)原理与 Python 实现
原理 直方图均衡化是一种通过使用图像直方图,调整对比度的图像处理方法:通过对图像的强度(intensity)进行某种非线性变换,使得变换后的图像直方图为近似均匀分布,从而,达到提高图像对比度和增强图片 ...
- 【MySQL】Linux下mysql安装全过程——小白入门篇(含有问题详解)
本次安装操作在申请的腾讯云上实现(版本:CentOS Linux release 7.4.1708 (Core) ). 根据教程实现(中途各种挖坑,填坑...),地址:http://www.runoo ...
- Linux fdisk命令详解[主分区/逻辑分区创建]
fdisk常见命令参数 -b<分区大小>:指定每个分区的大小: -l:列出指定的外围设备的分区表状况: -s<分区编号>:将指定的分区大小输出到标准输出上,单位为区块: -u: ...
- 我的第一个springboot应用+maven依赖管理
第一步:使用Eclipse创建maven工程SpringBootFirst:工程目录如下 第二步:编写依赖文件pom.xml <project xmlns="http://maven. ...
- 第一次项目冲刺(Alpha版本)2017/11/19
一.当天站立式会议 会议内容 1.对数据库的设计的进一步讨论 2.讨论SSH一些配置细节 3.分配今天的任务 二.任务分解图 三.燃尽图 四.心得 1.零散的时间要利用起来,追上计划的进度. 2.在小 ...
- 【转载】 socket recv 和 read
转自: http://blog.csdn.net/rankun1/article/details/50488989 send函数工作原理: send函数只负责将数据提交给协议层. 当调用该函数时,se ...