Scala: безопасны ли начальные значения в массиве [Double]? - PullRequest
5 голосов
/ 07 июля 2011

Когда требуется массив [Double], содержащий все нули, безопасно ли использовать

    val allZeros = new Array[Double](10)
    val whatever = allZeros( 5 )     // guaranteed to be 0.0, not null?
    assert( whatever == 0.0 )        // succeeds

или я должен придерживаться

    val allZeros = Array.fill[Double](10)( 0.0 )

Я знаю, что первая версияработает, но является ли это гарантией, предоставляемой языком, т.е. всегда ли она будет безопасной?Double теоретически также может быть инициализирован с помощью null (хотя, думая об этом, как разработчик языка, я бы не стал вносить такие изменения: -).

Ответы [ 2 ]

5 голосов
/ 07 июля 2011

Double в Scala - это не объект типа java.lang.Double, а тип примитива double.Таким образом, значение по умолчанию равно 0. Вы можете использовать свою первую версию, которая совершенно безопасна.

Однако я предпочитаю вторую версию, потому что она вводит другой уровень безопасности: она документирована самостоятельно.

3 голосов
/ 07 июля 2011

Да, это безопасно.Это фактически гарантия, которую дает Java, и она распространяется на Scala.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...