首页 > 代码库 > Scala 学习笔记之函数(2)
Scala 学习笔记之函数(2)
1 class OldStudent extends Student { 2 3 def filterName(s: String, f: String => String) = { 4 if (s != null) f(s) else s 5 } 6 7 def mytrim(s: String) = s.trim() 8 9 def talkToAll(p1Name: String, p2Name: String, p3Name: String, fn: (String, String, String) => String): String = { 10 fn(p1Name, p2Name, p3Name) 11 } 12 13 def talkToAllCommon[A, B](p1Name: A, p2Name: A, p3Name: A, fn: (A, A, A) => B): B = { 14 fn(p1Name, p2Name, p3Name) 15 } 16 17 def talkToAllCommon2[A, B, C](p1Name: A, p2Name: B, p3Name: C, fn: (A, B, C) => C): C = { 18 fn(p1Name, p2Name, p3Name) 19 } 20 21 } 22 23 object FunctionDemo2 { 24 def main(args: Array[String]): Unit = { 25 val s = new OldStudent() 26 //高阶函数 27 println(s.filterName(null, s.mytrim)) 28 println(s.filterName("bill", s.mytrim)) 29 //匿名函数 30 val greeter = (name: String) => s"Hello, $name" 31 println(greeter("world")) 32 //无参函数 33 def writeStart() = "write start" 34 val writeStartVal = () => "write start val" 35 println(writeStart) 36 println(writeStartVal()) 37 //高阶函数匿名调用 38 println(s.filterName(null, (s: String) => s.trim())) 39 println(s.filterName("bill", (s: String) => s.trim())) 40 println(s.filterName(null, s => s.trim())) 41 println(s.filterName("bill", s => s.trim())) 42 //占位符 43 println(s.filterName(null, _.trim())) 44 println(s.filterName("bill", _.trim())) 45 //多占位符 46 println(s.talkToAll("bill", "allen", "sky", _ + ", " + _ + ", " + _)) 47 //类型参数 48 println(s.talkToAllCommon[String, String]("bill", "allen", "sky", _ + _ + _)) 49 println(s.talkToAllCommon[Int, Int](1, 2, 3, _ + _ + _)) 50 println(s.talkToAllCommon2[Int, Float, Double](1, 2, 3, _ + _ + _)) 51 } 52 }
Scala 学习笔记之函数(2)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。