Здесь, кажется, есть несколько заблуждений.
... создайте опциональный элемент и получите доступ к полю, в котором записано логическое значение ...
Там здесь нет поля isDefined
- это метод в классе Option
, который проверяет, является ли этот экземпляр Some()
или None
.
... почему нам нужен здесь Optional, а не просто возвращать логическое значение в canAppendOffset()
.
Но canAppendOffset()
действительно"просто возвращает Boolean
". Это toRelative()
, который "создает" Option
, и он делает это потому, что, хотя предполагается для возврата "относительного" из заданного смещения, он может фактически не выполнить это, если верный результат невозможно.
Таким образом, он возвращает Option[Int]
, что говорит вызывающей стороне: «Вот Some(relative)
, если его можно вычислить по заданному смещению, но это None
, если я не могу вычислить товар результат для вас. "