Следующий код взят из программирования в книге Scala Мартина Одерски и др. который определяет рациональный тип:
class Rational(n: Int, d: Int) {
require(d != 0)
private val g = gcd(n.abs, d.abs)
val numer = n / g
val denom = d / g
...
private def gcd(a: Int, b: Int): Int = if (b == 0) a else gcd(b, a % b)
}
Здесь значение g используется только тогда, когда неявный конструктор инициализирует числа и деноминацию полей. Предположим, программист знает, что его нельзя использовать нигде. В приведенном выше случае он по-прежнему доступен после построения объекта Rational. Это означает, что он также будет занимать пространство, поскольку является частным полем, а не локальной переменной для конструктора.
Мой вопрос заключается в том, как изменить этот код, чтобы g
использовался только при построении и затем выбрасывался?