比较Scala中的两个数字时鼓励的样式是什么?

前端之家收集整理的这篇文章主要介绍了比较Scala中的两个数字时鼓励的样式是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_301_3@
比较两个数字时,我们可以使用if-else或模式匹配:

如果别的

if (guess < secretNum) println("Too small!\n")
else if (guess > secretNum) println("Too big!\n")
else {
  println("You win!\n")
  continueLooping = false
  }

模式匹配

guess match {
  case x if x < secretNum => println("Too small!\n")
  case x if x > secretNum => println("Too big!\n")
  case _ => {
    println("You win!\n")
    continueLooping = false
    }
}

有没有更明确的方式来写这个?鼓励哪些?

编辑

这是Rust方式:

match guess.cmp(&secret_number) {
        Ordering::Less => println!("Too small!"),Ordering::Greater => println!("Too big!"),Ordering::Equal => { println!("You win!"); break;
        }

解决方法

如果您可以访问Scalaz库,则可以匹配Rust的样式和清晰度:

import scalaz._
import Scalaz._

guess ?|? secretNum 
  match {
    case Ordering.LT => println("Too small!")
    case Ordering.GT => println("Too big!")
    case Ordering.EQ => println("You win!")
}

在偏好方面,这取决于.如果性能至关重要,则if-else胜过模式匹配习语.如果可读性至关重要,那么在我看来,与Scalaz提供的设施进行模式匹配会产生更易读的代码;它避免像你在你的例子中那样使用等距守卫.

@H_301_3@

猜你在找的Scala相关文章