zoukankan      html  css  js  c++  java
  • Option

    package option
    
    sealed trait Option[+A] {
    
      def map[B](f: A => B): Option[B] = this match {
        case None    => None
        case Some(a) => Some(f(a))
      }
    
      def flatMap[B](f: A => Option[B]): Option[B] = this match {
        case None    => None
        case Some(a) => f(a)
      }
    
      def getOrElse[B >: A](default: => B): B = this match {
        case None    => default
        case Some(a) => a
      }
    
      def orElse[B >: A](ob: => Option[B]): Option[B] = this match {
        case None => ob
        case _    => this
      }
    
      def filter(f: A => Boolean): Option[A] = this match {
        case Some(a) if (f(a)) => this
        case _                 => None
      }
    }
    
    case class Some[+A](get: A) extends Option[A]
    
    case object None extends Option[Nothing]
    
    object Run {
    
      def main(args: Array[String]): Unit = {
        val some = Some(1.01000)
        val none = None: Option[Double]
    
        println(some.map(_ + 1))
        println(none.map(_ + 1))
    
        println(some.flatMap(x => Some(x + 1)))
        println(none.flatMap(x => Some(x + 1)))
    
        println(some.getOrElse("3.14"))
        println(none.getOrElse("3.14"))
    
        println(some.orElse(Some(1.414)))
        println(none.orElse(Some(1.414)))
    
        println(some.filter(x => x == 1.01))
        println(none.filter(x => x == 1.01))
    
      }
    
    }
    Some(2.01)
    None
    Some(2.01)
    None
    1.01
    3.14
    Some(1.01)
    Some(1.414)
    Some(1.01)
    None
  • 相关阅读:
    Linux命令(25)userdel命令
    Linux命令(24)clear命令
    Linux命令(23)usermod命令
    Linux命令(22)useradd命令
    c++primer 练习9.28
    概率论python代码
    python自写软件(三)
    Linux描述符表和描述符高速缓存
    操作系统的坑(更新)
    python自写软件(二)
  • 原文地址:https://www.cnblogs.com/JonkeyGuan/p/5426404.html
Copyright © 2011-2022 走看看