Назовите объект в конструкторе списка Scala

#list #scala

#Список #scala

Вопрос:

Учитывая два класса A() и B (a: A), я хочу использовать их для построения списка, подобного этому:

List(val a = A(), B(a))

Как этого добиться?

Ответ №1:

Вы не можете объявить значение при вызове конструктора списка таким образом. Предполагая, что A и B являются классами case, разделите ваш пример на две строки следующим образом:

 val a = A()
List(a, B(a))
  

должно иметь желаемый эффект.

Если цель состоит в том, чтобы уменьшить область действия a , вы можете сделать что-то вроде этого:

 val l = {
   val a = A()
   List(a, B(a))
}
  

и a не будет отображаться за пределами определения l .

Комментарии:

1. Да, я это знаю. Я просто подумал, что есть выход. Спасибо.

2. Чего вы пытаетесь достичь? Я отредактировал, чтобы включить предложение, если вы пытаетесь свести область видимости a к минимуму.

3. Это именно то, что мне было нужно, чтобы ограничить область действия. Я забыл об этом синтаксисе 🙂 Не так коротко, как я хотел. Большое спасибо!