class OldStudent extends Student {

   def filterName(s: String, f: String => String) = {
if (s != null) f(s) else s
} def mytrim(s: String) = s.trim() def talkToAll(p1Name: String, p2Name: String, p3Name: String, fn: (String, String, String) => String): String = {
fn(p1Name, p2Name, p3Name)
} def talkToAllCommon[A, B](p1Name: A, p2Name: A, p3Name: A, fn: (A, A, A) => B): B = {
fn(p1Name, p2Name, p3Name)
} def talkToAllCommon2[A, B, C](p1Name: A, p2Name: B, p3Name: C, fn: (A, B, C) => C): C = {
fn(p1Name, p2Name, p3Name)
} } object FunctionDemo2 {
def main(args: Array[String]): Unit = {
val s = new OldStudent()
//高阶函数
println(s.filterName(null, s.mytrim))
println(s.filterName("bill", s.mytrim))
//匿名函数
val greeter = (name: String) => s"Hello, $name"
println(greeter("world"))
//无参函数
def writeStart() = "write start"
val writeStartVal = () => "write start val"
println(writeStart)
println(writeStartVal())
//高阶函数匿名调用
println(s.filterName(null, (s: String) => s.trim()))
println(s.filterName("bill", (s: String) => s.trim()))
println(s.filterName(null, s => s.trim()))
println(s.filterName("bill", s => s.trim()))
//占位符
println(s.filterName(null, _.trim()))
println(s.filterName("bill", _.trim()))
//多占位符
println(s.talkToAll("bill", "allen", "sky", _ + ", " + _ + ", " + _))
//类型参数
println(s.talkToAllCommon[String, String]("bill", "allen", "sky", _ + _ + _))
println(s.talkToAllCommon[Int, Int](1, 2, 3, _ + _ + _))
println(s.talkToAllCommon2[Int, Float, Double](1, 2, 3, _ + _ + _))
}
}
null
bill
Hello, world
write start
write start val
null
bill
null
bill
null
bill
bill, allen, sky
billallensky
6
6.0

Scala 学习笔记之函数(2)的更多相关文章

  1. scala 学习笔记(01) 函数定义、分支、循环、异常处理、递归

    package yjmyzz import scala.io.StdIn object ScalaApp { def main(args: Array[String]) { println(" ...

  2. scala学习笔记:函数与方法

    http://stackoverflow.com/questions/2529184/difference-between-method-and-function-in-scala A Functio ...

  3. Scala 学习笔记之函数(1)

    class Student { val mySayHello1: String => Unit = sayHello val mySayHello2: (String, Int) => U ...

  4. Scala 学习笔记之函数(3)

    class student{ def sayHello(name: => String){ println(s"Hello, $name, welcome $name") } ...

  5. 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性

    基于.net的分布式系统限流组件   在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可 ...

  6. Scala学习笔记及与Java不同之处总结-从Java开发者角度

    Scala与Java具有很多相似之处,但又有很多不同.这里主要从一个Java开发者的角度,总结在使用Scala的过程中所面临的一些思维转变. 这里仅仅是总结了部分两种语言在开发过程中的不同,以后会陆续 ...

  7. Matlab学习笔记 figure函数

    Matlab学习笔记 figure函数 matlab中的 figure 命令,能够创建一个用来显示图形输出的一个窗口对象.每一个这样的窗口都有一些属性,例如窗口的尺寸.位置,等等.下面一一介绍它们. ...

  8. matlab学习笔记 bsxfun函数

    matlab学习笔记 bsxfun函数 最近总是遇到 bsxfun这个函数,前几次因为无关紧要只是大概看了一下函数体去对比结果,今天再一次遇见了这个函数,想想还是有必要掌握的,遂查了些资料总结如下. ...

  9. matlab学习笔记13_1 函数返回值

    一起来学matlab-matlab学习笔记13函数 13_1 函数返回值 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 https://blog.csdn.net/qq_36556 ...

随机推荐

  1. HDU - 1392 Surround the Trees (凸包)

    Surround the Trees:http://acm.hdu.edu.cn/showproblem.php?pid=1392 题意: 在给定点中找到凸包,计算这个凸包的周长. 思路: 这道题找出 ...

  2. Atcoder D - Widespread (二分)

    题目链接:http://abc063.contest.atcoder.jp/tasks/arc075_b 题解:直接二分答案然后再判断(a-b)来替代不足的.看代码比较好理解,水题. #include ...

  3. Swift从入门到精通第八篇 - 方法 初识

    方法(学习笔记) 环境Xcode 11.0 beta4 swift 5.1 方法 结构体.枚举.类都可以定义方法(实例方法.类型方法) 实例方法(Instance Methods) 实例方法只能用实例 ...

  4. 实现一个基于码云的Storage

    实现一个简单的基于码云(Gitee) 的 Storage Intro 上次在 asp.net core 从单机到集群 一文中提到存储还不支持分布式,并立了一个 flag 基于 github 或者 开源 ...

  5. 《即时消息技术剖析与实战》学习笔记5——IM系统如何保证消息的一致性

    一.什么是消息一致性 消息一致性指的是消息的时序一致性,即消息收发的一致性.如果不能保证时序一致性,就会造成聊天语义不连贯,引起误会. 对于点对点的聊天场景,时序一致性保证接收方的接收顺序和发送方的发 ...

  6. 使用 jupyter-notebook + python + matplotlib 进行数据可视化

    上次用 python 脚本中定期查询数据库,监视订单变化,将时间与处理完成订单的数量进行输入写入日志,虽然省掉了人为定时查看数据库并记录的操作,但是数据不进行分析只是数据,要让数据活起来! 为了方便看 ...

  7. Linux基础Day001-001章

    运维工作职责:(运行和维护服务器) 1.数据不能丢失, 2.保障网站7*24H正常运行,--一直运行; 3.用户体验要好,--打开网站速度要快 服务器核心硬件(硬盘,内存,CPU) 尺寸: 1U-4. ...

  8. spring aop 之链式调用

    关关雎鸠,在河之洲.窈窕淑女,君子好逑. 概述 AOP(Aspect Orient Programming),我们一般称为面向方面(切面)编程,作为面向对象的一种补充,用于处理系统中分布于各个模块的横 ...

  9. C#中使用FilleStream实现视频文件的复制

    场景 C#中FileStream的对比以及使用方法: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100396022 关注公众号 ...

  10. 【学习笔记】python3核心技术与实践--如何逐步突破,成为python高手

    众所周知,Facebook 的主流语言是 Hack(PHP 的进化版本).不过,我敢拍着胸脯说,就刚入职的工程师而言,100 个里至少有 95 个,以前都从未用过 Hack 或者 PHP.但是,这些人 ...