我试图计算Scala中java.awt.Rectangle
的宽高比。我正在考虑长边与短边的比例"纵横比的定义,而不是"宽度到高度"纵横比的类型。
以下代码有效,但是有什么方法可以避免临时变量并将其转换为单行代码?
val sizes = Seq(rect.getWidth, rect.getHeight)
val aspectRatio = sizes.max / sizes.min
答案 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