比较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提供的设施进行模式匹配会产生更易读的代码;它避免像你在你的例子中那样使用等距守卫. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |