简化Scala表达式计算比率

时间:2014-10-29 06:57:58

标签: scala rectangles aspect-ratio

我试图计算Scala中java.awt.Rectangle的宽高比。我正在考虑长边与短边的比例"纵横比的定义,而不是"宽度到高度"纵横比的类型。

以下代码有效,但是有什么方法可以避免临时变量并将其转换为单行代码?

val sizes = Seq(rect.getWidth, rect.getHeight)
val aspectRatio = sizes.max / sizes.min

3 个答案:

答案 0 :(得分:20)

您不必创建序列来计算最小值和最大值。您可以使用数学方法

Math.max(rect.getWidth, rect.getHeight) / Math.min(rect.getWidth, rect.getHeight)

答案 1 :(得分:8)

一种方法,假设只有两个值被添加到序列中,

Seq(rect.getWidth, rect.getHeight).sorted.reverse.foldRight(1.0)( _ / _ ) 

你提出的代码虽然更具可读性,但更容易出错,最多除以零需要一些小心。

答案 2 :(得分:6)

val aspectRatio = if(rect.getWidth >= rect.getHeight) rect.getWidth / rect.getHeight else rect.getHeight / rect.getWidth