[scala] scala 函数 (⑦)
1.scala 函数定义
2.scala 高阶函数
3.匿名函数
4.柯里化
import scala.math._ /**
* @author xwolf
* @date 2017-04-24 9:57
* @since 1.8
*/
class Function {
// _ 将round 方法转化为函数
val cel = round _ def add(x:Int,y:Int) = x+y //函数
def f(x : => Int) = x.+(3) def m (r : => Double) = {
val rs=(Math.PI*r*r*0.5)
rs} //高阶函数
def a(s:(Int)=>Int,z:Int)= s(z)+this.f(z) //匿名函数定义
val minus = (m:Int) => m-1 // 柯里化函数定义
def ads(x:Int)=(y:Int) => x*y //阶乘 (递归实现)
def sm(x:Int):BigInt={
if (x==1 || x==0) 1
else sm(x-1)*x
} //阶乘 (reduceLeft 实现)
def rsm(x:Int):BigInt={
(1 to x).reduceLeft(_ * _)
} // 求数组的最大值
def max(ary :Array[Int]):Int={
ary.reduceLeft(_ max _)
} // 求数组的最大值
def getMax(ary :Array[Int]):Int={
//底层也是reduceLeft
ary.max
}
}
测试:
object FunctionTest {
def main(args: Array[String]): Unit = {
val function = new Function
val cel = function.cel(32)
println(cel)
val a = function.f(1)
println(a)
val b = function.add(12,32)
println(b)
val c = function.m(2.4)
println(c)
val d = function.minus(3)
println(d)
//柯里化
val e = function.ads(2)(10)
println(e)
val f = function.sm(5)
println(f)
val f2 = function.rsm(5)
println(f2)
val ary =Array(3,32,4,2,2)
val g =function.getMax(ary)
println(g)
//高阶函数使用
val af = function.a(a=>4,3)
print(af)
}
}
[scala] scala 函数 (⑦)的更多相关文章
- Scala 匿名函数
Scala 中定义匿名函数的语法很简单,箭头左边是参数列表,右边是函数体. 使用匿名函数后,我们的代码变得更简洁了. 下面的表达式就定义了一个接受一个Int类型输入参数的匿名函数: var inc = ...
- scala匿名函数
package com.ming.test import scala.math._ object AnonymousFunc { def valueAtOneQuarter(f:(Double)=&g ...
- Scala应用函数
我们使用“_” 来代替单个的参数,实际上你也可以使用“_”来代替整个参数列表,比如说,你可以使用 print _ 来代替 println (_). someNumbers.foreach(printl ...
- Scala学习——函数高级操作
scala函数高级操作 一.字符串高级操作 多行字符串和插值 package top.ruandb.scala.Course06 object StringApp { def main(args: A ...
- Scala学习——函数
一.函数的定义(def) object FunctionApp { //定义函数:方法体内最后一行为返回值,不需要使用return def add(a:Int,b:Int):Int={ a + b } ...
- scala mapPartitionsWithIndex函数的使用
var rdd1=sc.makeRDD(Array((1,"A"),(2,"B"),(3,"C"),(4,"D")),2 ...
- Scala的函数,高阶函数,隐式转换
1.介绍 2.函数值复制给变量 3.案例 在前面的博客中,可以看到这个案例,关于函数的讲解的位置,缺省. 4.简单的匿名函数 5.将函数做为参数传递给另一个函数 6.函数作为输出值 7.类型推断 8. ...
- Scala(二) —— 函数
try 表达式 var result = try{ Integer.parseInt("dog") }catch{ case _ => 0 }finally{ println ...
- scala中函数简单使用记录
object funcHighLevel { def main(args: Array[String]): Unit = { // 创建一个匿名函数 val sayFunc = (name: Stri ...
随机推荐
- Java编程的逻辑 (31) - 剖析Arrays
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...
- python多进程并发
由于Python下调用Linux的Shell命令都需要等待返回,所以常常我们设置的多线程都达不到效果,因此在调用shell命令不需要返回时,使用threading模块并不是最好的方法. http: ...
- hbase源码系列(四)数据模型-表定义和列族定义的具体含义
hbase是一个KeyValue型的数据库,在<hbase实战>描述它的逻辑模型[行键,列族,列限定符,时间版本],物理模型是基于列族的.但实际情况是啥?还是上点代码吧. HTableDe ...
- 解决mysql开启GTID主从同步出现1236错误问题
解决mysql开启GTID主从同步出现1236错误问题 最近遇到mysql开启gtid做复制时,从库出现1236错误,导致同步无法进行,本文就这问题记录下处理步骤,有关gtid知识在这里不做介 ...
- AngularJS Notes
ng-app The ng-app directive tells AngularJS that the <div> element is the "owner" of ...
- Reusable async validation for WPF with Prism 5
WPF has supported validation since the first release in .NET 3.0. That support is built into the bin ...
- Ubuntu16.04安装Mininet
Ubuntu16.04源码安装Mininet 本文介绍了VMware虚拟机ubuntu16.04中安装Mininet的方法,物理机中的方法与之相同.主要参考了Mininet官方的教程.官方提供了四种安 ...
- 【转】【Centos】centos 安装libtorrent/rtorrent
1.下载编译时需要的软件 yum install gcc gcc-c++ m4 make automake libtool pkgconfig perl openssl-devel ncurses-d ...
- Solr系列三:solr索引详解(Schema介绍、字段定义详解、Schema API 介绍)
一.Schema介绍 1. Schema 是什么? Schema:模式,是集合/内核中字段的定义,让solr知道集合/内核包含哪些字段.字段的数据类型.字段该索引存储. 2. Schema 的定义方式 ...
- QComboBox:类似于的百度的搜索提示
参考: http://blog.csdn.net/lingchen214/article/details/17960789 http://blog.sina.com.cn/s/blog_a6fb6cc ...