[comment]: # Scala underscore的用途

_ 的用途

  1. // import all
  2. import scala.io._
  3. // import all, but hide Codec
  4. import scala.io.{Codec => _, _}
  5. // import all, but rename Codec as CodeA
  6. import scala.io.{Codec => CodeA, _}
  7. // import all from an object
  8. import scala.io.Codec._
  9. object Main {
  10. // Higher kinded type parameter
  11. import scala.language.higherKinds
  12. class CollectionAdapter[T[_]] {
  13. def getCollectionFromValue[A](a: A, f: A => T[A]): T[A] = {
  14. f(a)
  15. }
  16. def intToList(a: Int): List[Int] = {
  17. List(a)
  18. }
  19. }
  20. def main(args: Array[String]): Unit = {
  21. // Higher kinded type parameter
  22. val adapter = new CollectionAdapter[List]()
  23. println(adapter.getCollectionFromValue(1, adapter.intToList))
  24. // output: List(1)
  25. // Initialize a variable with default value
  26. var i:Int = 0 // _ cannot be used in a function
  27. println(i)
  28. // output: 0
  29. // Partial function application, Assign a function rather than run it.
  30. def fun1(): Unit = {println("fun1 is invoked.")}
  31. def obj1 = fun1 // run fun1 and return the result to obj1
  32. // output: fun1 is invoked.
  33. // output: ()
  34. def fun2 = fun1 _ // assign fun1 to fun2
  35. println(fun2)
  36. // output: <function0>
  37. // Anonymouse function, scala will infer it base on the context.
  38. val list1 = (1 to 10)
  39. println(list1.filter(_ > 5))
  40. // output: Vector(6, 7, 8, 9, 10)
  41. // equivalent to:
  42. println(list1.filter(a => a > 5))
  43. // output: Vector(6, 7, 8, 9, 10)
  44. // setter function
  45. class A {
  46. private var _count = 0
  47. // getter
  48. def count = {_count}
  49. // setter
  50. def count_= (n: Int) = {_count = n}
  51. // bang ??
  52. def bang_! (n: Boolean) = {5}
  53. }
  54. val a = new A
  55. a.count = 5
  56. println(a.count)
  57. // output: 5
  58. // Pattern match
  59. def matchTest(x: Any): String = x match {
  60. case 1 => "one"
  61. case 2 => "two"
  62. case List(0, _, _) => "a list with three elements and the first element is 0"
  63. case List(_*) => "a list with zero or more elements"
  64. case _: Map[_, _] => "matches a map with any key type and any value type"
  65. case _ => "anything else"
  66. }
  67. // anonymous variable. (or we can say ignored variable)
  68. for (_ <- 1 to 2) {
  69. println("hi")
  70. }
  71. // Sequence list2 is passed as multiple parameters to f(a: T*)
  72. def fun3(a: Int*) = { a.map(println(_)) }
  73. fun3(1 to 3: _*)
  74. // output:
  75. // 1
  76. // 2
  77. // 3
  78. // Access tuple
  79. var t = new Tuple3(1, "Two", "Three")
  80. println(t._2)
  81. // output: Two
  82. }
  83. }

参照

Scala underscore的用途的更多相关文章

  1. 学习Scala: 初学者应该了解的知识

    Scala开发参照清单 这里列出在开发一个Scala工程中需要参照的资料. 官网网站 http://www.scala-lang.org/ 文档网站 http://docs.scala-lang.or ...

  2. 我的Machine Learning学习之路

    从2016年年初,开始用python写一个简单的爬虫,帮我收集一些数据. 6月份,开始学习Machine Learning的相关知识. 9月开始学习Spark和Scala. 现在想,整理一下思路. 先 ...

  3. 【转载】 我的Machine Learning学习之路

    原文地址: https://www.cnblogs.com/steven-yang/p/5857964.html ------------------------------------------- ...

  4. 你需要了解的JS框架

    excanvas.js/Chart.js/cubism.js/d3.js/dc.js/dx.chartjs.js/echarts.js/flot.js       用途:构建数据统计图表,兼容多浏览器 ...

  5. 前端开发需要了解的JS插件

    excanvas.js/Chart.js/cubism.js/d3.js/dc.js/dx.chartjs.js/echarts.js/flot.js 用途:构建数据统计图表,兼容多浏览器 jquer ...

  6. Backbone vs AngularJS

    首先 Backbone 没有 AngularJS 那么容易上手. 而且作者并没有想让Backbone草根化的意思. Backbone 比喻成战斗机. 看上去更像是真正的MVC框架, model-vie ...

  7. Scala 中下划线的用途

    转载自:https://my.oschina.net/leejun2005/blog/405305 Scala 作为一门函数式编程语言,对习惯了指令式编程语言的同学来说,会不大习惯,这里除了思维方式之 ...

  8. 浅谈 Scala 中下划线的用途

    Scala 作为一门函数式编程语言,对习惯了指令式编程语言的同学来说,会不大习惯,这里除了思维方式之外,还有语法层面的,比如 underscore(下划线)就会出现在多种场合,令初学者相当疑惑,今天就 ...

  9. Scala:函数式编程之下划线underscore

    http://blog.csdn.net/pipisorry/article/details/52913548 python参考[python函数式编程:apply, map, lambda和偏函数] ...

随机推荐

  1. CSS3实现旋转的太极图(二):只用1个DIV

    效果预览:   PS: 1.昨天用3个DIV实现了太极图(点击查看),,今天试着用1个Div来做. 2.公司刚忙过双10周年庆,最近空闲下来,闲着也是闲着,总得写点东西吧. 3.高手莫喷,小弟仅仅是没 ...

  2. maven快照版本和发布版本

    在使用maven过程中,我们在开发阶段经常性的会有很多公共库处于不稳定状态,随时需要修改并发布,可能一天就要发布一次,遇到bug时,甚至一天要发布N次.我们知道,maven的依赖管理是基于版本管理的, ...

  3. apache服务器配置Net的实践

    前置: 在xp系统中,打补丁之类或啥子操作引起或多或少的问题,最终导致iis不能使用: 不想装系统...忍着... 最近突发事件导致,需要摸一下apache服务器处理,好吧,那就搜索下吧..... 目 ...

  4. VS2010 发布web项目 问题

    载:http://www.cnblogs.com/shaocm/archive/2012/08/10/2632116.html

  5. 30分钟入门Java8之默认方法和静态接口方法

    30分钟入门Java8之默认方法和静态接口方法 前言 上一篇文章30分钟入门Java8之lambda表达式,我们学习了lambda表达式.现在继续Java8新语言特性的学习,今天,我们要学习的是默认方 ...

  6. DMSFrame 之SqlCacheDependency(一)

    1.SqlCacheDependency都是我们常用的一种Cache写法了.对后面的SQL 2005算是比较成熟的一种缓存模式了,这里介绍一下DMSFrame的SqlCacheDependency是怎 ...

  7. 解决错误: java.lang.NoClassDefFoundError: antlr/RecognitionException

    网络质量不好的情况下,访问maven.org网站下载jar包,很有可能下载的包不完整或损坏的(表面看不出来):所以,最好的办法就是-直接到maven网站下载,然后放到对应的.m2目录,然后eclips ...

  8. 【转】web集群时session同步的3种方法

    转载请注明作者:海底苍鹰地址:http://blog.51yip.com/server/922.html 在做了web集群后,你肯定会首先考虑session同步问题,因为通过负载均衡后,同一个IP访问 ...

  9. netbeans php安装、调试

    文件清单 jdk-8u45-windows-i586_8.0.450.14.1429092020.exe netbeans-8.0.2-php-windows.exe wampserver2.5-Ap ...

  10. CSS实例

    CSS 实例 CSS背景 设置页面的背景颜色 设置不同元素的背景颜色 设置一个图像作为页面的背景 错误的的背景图片 如何在水平方向重复背景图像 如何定位背景图像 一个固定的背景图片(这个图片不会随页面 ...