Как декларативно создать список в 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
,