【发布时间】:2023-03-16 08:05:02
【问题描述】:
在 C# 中,我可以声明式地声明一个列表,换句话说,声明它的结构并同时初始化它,如下所示:
var users = new List<User>
{
new User {Name = "tom", Age = 12},
new User {Name = "bill", Age = 23}
};
忽略 .Net 中的 List 和 Scala 中的 List 之间的差异(即,随意使用不同的集合类型),是否可以在 Scala 2.8 中做类似的事情?
更新
从下面改编 Thomas 的代码我相信这是与所示 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))
【问题讨论】:
-
有必要写
<User>吗? C# 不能从“内容”中推断出 List 的泛型类型吗? -
您是否有指向您在此处显示的语法的链接?想读一下。是不是类似于 Java 的实例初始化块?
-
@soc - c# 无法推断我想创建一个列表,我需要告诉它。如果我想要一个数组,我可以执行以下操作: var users = new [] { new User {Name = "tom", Age = 12}, new User {Name = "bill", Age = 23} };这是语法描述的链接:msdn.microsoft.com/en-us/library/bb384062.aspx
-
@Rupert:很奇怪。它说这种语法适用于 IEnumerable 的子类型,但我在接口和实现该功能的类中找不到任何东西。
-
@soc:相信是编译器实现的。
标签: scala collections declarative-programming