Как декларативно создать список в Scala?

В C# я могу объявить список декларативно, другими словами, объявить его структуру и инициализировать его одновременно следующим образом:

var users = new List<User>
            {
                new User {Name = "tom", Age = 12}, 
                new User {Name = "bill", Age = 23}
            };

Игнорируя различия между списком в.Net и списком в Scala (т. Е. Не стесняйтесь использовать другой тип коллекции), возможно ли сделать что-то подобное в Scala 2.8?

ОБНОВИТЬ

Адаптируя код Томаса снизу, я считаю, что это ближайший эквивалент показанного кода C#:

class User(var name: String = "", var age: Int = 0)

val users = List(
  new User(name = "tom", age = 12), 
  new User(name = "bill", age = 23))

4 ответа

Решение

Адаптируя код Томаса снизу, я считаю, что это ближайший эквивалент показанного кода C#:

class User(var name: String = "", var age: Int = 0)

val users = List(
  new User(name = "tom", age = 12), 
  new User(name = "bill", age = 23))

Он немного отличается от поведения кода C#, поскольку мы предоставляем явный конструктор со значениями по умолчанию, а не используем конструктор no args и задаем свойства впоследствии, но конечный результат сопоставим.

Как насчет:

case class User(name: String, age: Int)

val users = List(User("tom", 12), User("bill", 23))

который даст вам:

users: List[User] = List(User(tom,12), User(bill,23))
val users = User("tom", 12) :: User("bill", 23) :: Nil

Вы также можете использовать класс Скала Tupel:

val users = ("tom", 12) :: ("bill", 23) :: Nil

Или вы можете создавать объекты без использования явного класса, определенного в модуле компиляции таким образом

List(
   new {var name = "john"; var age = 18},
   new {var name = "mary"; var age = 21}
)
Обратите внимание, что этот код имеет серьезный недостаток, он будет создавать анонимный класс для каждого new,

Другие вопросы по тегам