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 ...
随机推荐
- oracle sql 命令类别
1.数据定义语言 DDL 有 create alter drop2.数据操纵语言 DML insert select delete update3.事务控制语言 TCL commit savepoin ...
- leetcode之二叉树的层序遍历
1.题目描述 2.题目分析 二叉树的层序遍历主要算法思想是使用 队列这一数据结构实现,这个数据结构多应用在和 图相关的算法.例如图的广度优先遍历就可以使用队列的方法实现.本题的关键在于如何识别出一层已 ...
- jquery中的ajax方法
$.ajax()方法详解 jquery中的ajax方法参数总是记不住,这里记录一下. 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为Strin ...
- 7.Spring MVC静态资源访问
在SpringMVC中常用的就是Controller与View.但是我们常常会需要访问静态资源,如html,js,css,image等. 默认的访问的URL都会被DispatcherServlet所拦 ...
- SQLSERVER中KeyHashValue的作用(上)
SQLSERVER中KeyHashValue的作用(上) SQLSERVER中KeyHashValue的作用(下) 原文的标题是:SQLSERVER在索引下如何找到哈希值的随想 现在知道KeyHash ...
- font-family:中文字体的英文名称 (宋体 微软雅黑)
宋体 SimSun 黑体 SimHei 微软雅黑 Microsoft YaHei 微软正黑体 Microsoft JhengHei 新宋体 NSimSun 新细明体 PMingLiU 细明体 Ming ...
- [翻译] CBStoreHouseRefreshControl
CBStoreHouseRefreshControl What is it? A fully customizable pull-to-refresh control for iOS inspired ...
- mac 程序 Access-JSON-Data
mac 程序 Access-JSON-Data 说明 直接将JSON数据生成文件,便于调试. 效果图 源码 https://github.com/YouXianMing/Create-JSON-Mod ...
- Git提交代码自动触发JenKins构建项目
1.需求场景 用户提交代码后自动触发jenkins构建项目 流程图如下: 2.JenKins安装Gitlab Hook Plugin插件 3.JenKins配置 4.Gitlab Hook Plugi ...
- .net mvc HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容
1. 检查服务器上是否安装了“HTTP重定向”功能和“静态内容压缩”功能(在添加/删除程序或增加角色处安装).这是我所遇到的问题: 2. 应用程序池要被配置为“集成” 3. 把.net 4.0安装在i ...