简化Scala表达式计算比率

My *_*adr 5 scala rectangles aspect-ratio

我正在尝试计算java.awt.RectangleScala 中a的宽高比.我要采用" 长边与短边的比例"宽高比的定义,而不是宽高比的"宽高比"类型.

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

val sizes = Seq(rect.getWidth, rect.getHeight)
val aspectRatio = sizes.max / sizes.min
Run Code Online (Sandbox Code Playgroud)

rtr*_*szk 20

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

Math.max(rect.getWidth, rect.getHeight) / Math.min(rect.getWidth, rect.getHeight)
Run Code Online (Sandbox Code Playgroud)


elm*_*elm 8

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

Seq(rect.getWidth, rect.getHeight).sorted.reverse.foldRight(1.0)( _ / _ ) 
Run Code Online (Sandbox Code Playgroud)

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

  • 创建序列并在其上执行3个操作对于如此简单的任务来说是太复杂的解决方案 (3认同)

mak*_*rix 6

val aspectRatio = if(rect.getWidth >= rect.getHeight) rect.getWidth / rect.getHeight else rect.getHeight / rect.getWidth
Run Code Online (Sandbox Code Playgroud)