加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 18:02:10 所属栏目:安全 来源:网络整理
导读:比较两个数字时,我们可以使用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 se
比较两个数字时,我们可以使用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提供的设施进行模式匹配会产生更易读的代码;它避免像你在你的例子中那样使用等距守卫.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读