_下划线的使用

  1. 存在性类型:Existential types

    val site = List(Option("Runoob"),Option(12),None)
    //Option[_]表示Option集合里可以是各种类型,应为上面是字符串,数字类型,也可以用Option[Any]来替换
    def test(l:List[Option[_]]):Unit={
    for(v<-l)
        {
            print(v.getOrElse("默认值"))
        }
     }
    test(site)
    
  2. 临时变量:Ignored variables

     val _ = 5
    
  3. 临时参数:Ignored parameters

     List(1, 2, 3). foreach { _ => println("Hi") }
    
  4. 通配模式:Wildcard patterns

     Some(5) match { case Some(_) => println("Yes") }
     match {
      case List(1,_,_) => " a list with three element and the       first element is 1"
      case List(_*)  => " a list with zero or more elements "
      case Map[_,_] => " matches a map with any key type and any value type "
      case _ =>
    }
    
    //模式匹配       
     abstract class Item
     case class Product(description: String, price: Double)  extends Item
     case class Bundle(description: String, discount: Double, items: Item*) extends Item
    
     def price(it: Item): Double = it match {
     case Product(_, p) => p
     //这里注释下map(price _) 注意什么都没有,_表示的是Product对象,取他的属性price,不知道为什么要这么写~~
     case Bundle(_, disc, its @ _*) => its.map(price _).sum * (100-disc) /100
     //这里@表示将嵌套的值绑定到变量its
     }
     //测试
     val bun2 = Bundle("Appliance sale",10.0,Product("Haier Refrigerato", 3000.0),Product("Geli air conditionor",2000.0))
      println(price(bun2))
    
  5. 通配导入:Wildcard imports

         import java.util._
    
  6. 隐藏导入:Hiding imports

       // Imports all the members of the object Fun but renames Foo to Bar
     import com.test.Fun.{ Foo => Bar , _ }
    
       // Imports all the members except Foo. To exclude a member rename it to _
     import com.test.Fun.{ Foo => _ , _ }
    
  7. 连接字母和标点符号:Joining letters to punctuation

       def bang_!(x: Int) = 5
    
  8. 偏应用函数:Partially applied functions

    def fun = {
    // Some code
    }
    val funLike = fun _
    
    List(1, 2, 3) foreach println _
    
    1 to 5 map (10 * _)
    
    foo _               // Eta expansion of method into method value
    
    foo(_)              // Partial function application
    Example showing why foo(_) and foo _ are different:
    
     trait PlaceholderExample {
    def process[A](f: A => Unit)
    val set: Set[_ => Unit]
        set.foreach(process _) // Error 
        set.foreach(process(_)) // No Error
    }
    
  9. 初始化默认值:default value

    var i: Int = _
    
  10. 作为参数名:
    //访问map
    var m3 = Map((1,100), (2,200))
    for(e<-m3) println(e._1 + ": " + e._2)
    m3 filter (e=>e.1>1)
    m3 filterKeys (
    >1)
    m3.map(e=>(e._1*10, e._2))
    m3 map (e=>e._2)

//访问元组:tuple getters
(1,2)._2

  1. 参数序列:parameters Sequence
    *作为一个整体,告诉编译器你希望将某个参数当作参数序列处理。例如val s = sum(1 to 5:)就是将1 to 5当作参数序列处理。
    //Range转换为List
    List(1 to 5:_
    )

//Range转换为Vector
Vector(1 to 5: _*)

//可变参数中
def capitalizeAll(args: String*) = {
args.map { arg =>
arg.capitalize
}
}

val arr = Array("what's", "up", "doc?")
capitalizeAll(arr: _*)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容

  • 下划线这个符号几乎贯穿了任何一本Scala编程书籍,并且在不同的场景下具有不同的含义,绕晕了不少初学者。正因如此,...
    Helen_Cat阅读 2,190评论 0 3
  • Scala的集合类可以从三个维度进行切分: 可变与不可变集合(Immutable and mutable coll...
    时待吾阅读 5,798评论 0 4
  • Scala与Java的关系 Scala与Java的关系是非常紧密的!! 因为Scala是基于Java虚拟机,也就是...
    灯火gg阅读 3,417评论 1 24
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,594评论 18 139
  • 1. 已经付了钱的大叔将报纸一囫囵卷起,前后瞧瞧自行车,并没有存放报纸的合适位置。赶巧又碰上这朦胧天气,滴答着几滴...
    臭小妈妈阅读 272评论 0 0