Любая причина того, чтобы иметь “val способность: Интервал” вместо “val Международная Способность” в Scala

Я читаю Scala, и я задаюсь вопросом...
Почему

val capacity : Int 

вместо

val Int capacity.

Любая причина, почему этот выбор был сделан. В противном случае это не кажется мне как хороший выбор отодвинуть от Java способ объявить это. Сделал бы переход от Java до Scala легче (не очень, но немного)

7
задан Mechanical snail 22 July 2012 в 21:31
поделиться

4 ответа

Потому что большую часть времени вы можете не использовать часть Int. Scala имеет гораздо более аккуратную систему вывода типов, чем Java.

20
ответ дан 6 December 2019 в 04:59
поделиться

x: T - стандартное обозначение типов в логике и многих языках программирования. C и его потомки, в том числе Java, отклоняются от этого. Но нотация типа C действительно ужасна (попробуйте записать тип для какой-нибудь умеренно сложной функции высшего порядка, такой как map).

Кроме того, с этой нотацией легко опустить тип (как уже писал Wysawyg) или добавить тип внутри выражения.

8
ответ дан 6 December 2019 в 04:59
поделиться

Вот пример утверждения Wysawyg:

val capacity = 2

Но обычно вы не можете сделать это только с val .

trait Foo {
  def capacity = 2 // Allow child classes to override and decide the value later
}

// Force instances of Bar to set the value
class Bar( override val capacity : Int ) extends Foo

// Have Bat determine it on the fly
trait Bat extends Foo {
    def onlyAThird : Int
    override def capacity = onlyAThird * 3
}

(Я пытался вставить это как комментарий, но, увы, без форматирования.)

2
ответ дан 6 December 2019 в 04:59
поделиться

В Программирование на Scala говорится, что техническая причина этого синтаксиса состоит в том, что он упрощает вывод типов.

2
ответ дан 6 December 2019 в 04:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: