Как я неявно преобразовываю Кортежи в вектор в Scala

Такой константой не может быть static, поскольку поля static являются общими для всех экземпляров класса, включая экземпляры всех подклассов. Вот как реализовать это как нестатическую константу:

public abstract class Foo {
  public final String name; // Particular value to be defined in subclass

  protected Foo (String name) {
    this.name = name;
  }
}

public class Bar extends Foo {
  public Bar () {
    super ("Zoo"); // Here we define particular value for the constant
  }
}

Кстати, serialVersionUID не является частью интерфейса Serializable.

5
задан ScalaNoob 1 April 2009 в 20:42
поделиться

2 ответа

Синтаксис Scala гибок, но это весьма конечно гибко. В частности, слияние кортежей, параметров и implicits делает это действительно опасной областью в пространстве дизайна библиотеки. Как Вы заметили, вещи, вероятно, будут повреждаться, не работать хорошо и давать загадочные сообщения об ошибках. Я предложил бы, чтобы Вы избежали его, если Вы можете.

В частности, я предлагаю, чтобы Вы сделали следующее определение:

val V = Vector

И затем все Ваши примеры работают, как Вы ожидали бы, без любого implicits, волшебства или загадочных сообщений об ошибках, и за счет только одного символа на Вектор.

val a = V(1,2)+V(.5,.3)
val b = V(1,2)+V(3,4)
val c = V(1,2)
val d = V(.5,.3)
val e = V(1,1)+b
val f = V(1,2)+V(.3,.5)
val g = V(.5,.3)
val h = V(1,1)+a

Это не точно синтаксис, который Вы хотите, но доверяете мне, это сохранит Вас боль и головные боли в конечном счете.

11
ответ дан 13 December 2019 в 19:36
поделиться

Эти неявные преобразования неоднозначны, и таким образом Scala не будет использовать ни одного из них. Это - причина, почему последние строки не оценят.

Один способ зафиксировать это уехал бы int2vec полностью, хотя это означает, что все целые числа были бы сначала неявно преобразованы в, Удваивается.

0
ответ дан 13 December 2019 в 19:36
поделиться
Другие вопросы по тегам:

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