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. 小米 OJ 编程比赛 02 月常规赛 3 Logic Gatekeeper CDQ分治

    link:https://code.mi.com/problem/list/view?id=139 题意: 有一个1e6 * 1e6 大的格子,现在有两种操作:1,给一个子矩阵中的每个格子加上k.2, ...

  2. CodeForces -Codeforces Round #496 (Div. 3) E2. Median on Segments (General Case Edition)

    参考:http://www.cnblogs.com/widsom/p/9290269.html 传送门:http://codeforces.com/contest/1005/problem/E2 题意 ...

  3. HYSBZ - 4016 最短路径树问题 点分治 + 最短路径最小字典序

    题目传送门 题解:首先对于给定的图,需要找到那些从1好点出发然后到x号点的最短路, 如果有多条最短路就要找到字典序最小的路,这样扣完这些边之后就会有一棵树.然后再就是很普通的点分治了. 对于扣边这个问 ...

  4. Git暂存本地代码,强制获取远程最新代码

    一:git stash  // 把本地修改的代码压到git栈中去 二:git pull  // 本地代码压栈之后,pull远程代码会完全覆盖本地代码 三:git stash list  // 可以查看 ...

  5. 关于JQuery.form.js异步上传文件点滴

    好久没动代码了,前几天朋友委托我帮忙给做几个页面,其中有个注册带图片上传的页面.已之前的经验应该很快就能搞定,没想到的是搞了前后近一天时间.下面就说说异步上传的重要几个点,希望自己下次遇到此类问题的时 ...

  6. 为什么不建议使用Date,而是使用Java8新的时间和日期API?

    Java 8:新的时间和日期API 在Java 8之前,所有关于时间和日期的API都存在各种使用方面的缺陷,因此建议使用新的时间和日期API,分别从旧的时间和日期的API的缺点以及解决方法.Java ...

  7. Kafka的安全认证机制SASL/PLAINTEXT

    一.背景 kafka提供了多种安全认证机制,主要分为SSL和SASL2大类.其中SASL/PLAIN是基于账号密码的认证方式,比较常用.最近做了个kafka的鉴权,发现官网上讲的不是很清楚,网上各种博 ...

  8. NLP(十七)利用tensorflow-serving部署kashgari模型

      在文章NLP(十五)让模型来告诉你文本中的时间中,我们已经学会了如何利用kashgari模块来完成序列标注模型的训练与预测,在本文中,我们将会了解如何tensorflow-serving来部署模型 ...

  9. ExpandableListView 可折叠的下拉listview

    ExpandableListView用法如下 1.定义布局文件main.xml文件 <?xml version="1.0" encoding="utf-8" ...

  10. Day 8 面试题

    一.选择题(每题2分) #####1.1 设超级用户root当前所在目录为:/usr/local,键入cd命令后, 用户当前所在目录为(B) A:/home B:/root C:/home/root ...