2011-02-09 55 views
4

在C#我可以聲明聲明一個列表,換句話說聲明其結構,並在同一時間進行初始化,如下所示:我如何在Scala中聲明創建一個列表?

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

忽略列表之間在.Net和Scala中的一個列表中的差異(即,隨意使用不同的集合類型),是否有可能在Scala 2.8中做類似的事情?

UPDATE

從下面我相信這是最近等同於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)) 
+0

是否需要編寫'`?不能C#從「內容」推斷列表的通用類型? – soc 2011-02-09 14:49:00

+0

你有鏈接到這裏顯示的語法嗎?希望讀到那個。它與Java的實例初始化塊相似嗎? – soc 2011-02-09 14:57:40

回答

1

從下面我相信這是最近等同於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#代碼的行爲,因爲我們提供默認的顯式構造的方式稍有不同值,而不是隨後使用無參數構造函數和設置屬性,但最終結果是可比的。

20

什麼:

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)) 
4
val users = User("tom", 12) :: User("bill", 23) :: Nil 

你也可以使用Scalas三元組類:

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

或者你也可以不使用你的編譯模塊以這種方式定義

List(
    new {var name = "john"; var age = 18}, 
    new {var name = "mary"; var age = 21} 
) 
注顯式類的創建對象,這段代碼有一些嚴重的缺點,它會爲每個 new創建一個匿名類。

相關問題