cala的隐式对象和隐式类1.4

15 阅读1分钟

在上一个判断手机号与身份证号码是否正确的基础上,改进代码,使任意一个整数具备计算阶乘的功能。

用隐式类计算阶乘

package imp

import scala.language.postfixOps

/*

    目标:让任意一个整数具备一个功能:计算阶乘
    n!=1*2*3*4*5*......*n
    5!=1*2*3*4*5=120


 * */
object imp06 {
  implicit  class  StrongString(n:Int) {
    def !(): Int = {
      n match {
        case num if num < 0 => -1  // 负数无阶乘
        case 0 | 1 => 1           // 0!和1!都为1
        case _ => (2 to n).product // 2到n的乘积(即阶乘)
      }
    }
  }

  def main(args: Array[String]): Unit = {

    println(4!)//24
    println(5!)//120

  }
}

package imp

import scala.language.postfixOps

/*

    目标:让任意一个整数具备一个功能:计算阶乘
    n!=1*2*3*4*5*......*n
    5!=1*2*3*4*5=120


 * */
object Imp06 {
  implicit class StrongInt(n: Int) {
    def ! : Int = {
      var rst = 1
      for (i <- 1 to n) {
        rst *= i
      }
      rst
    }
  }

  def main(args: Array[String]): Unit = {

    println(4!)//24
    println(5!)//120

  }
}