2009-06-11 53 views
0

我在VS 2010中玩弄F#,我無法弄清楚如何爲類中的成員賦值。F#爲類成員分配值在方法中

type SampleGame = 
    class 
    inherit Game 
    override Game.Initialize() = 
     spriteBatch <- new SpriteBatch(this.GraphicsDevice) 
     base.Initialize() 
    val mutable spriteBatch : SpriteBatch 
    end 

我認爲這是正確的,但它說它無法找到「spriteBatch」。這是爲對象創建成員的正確方法,還是有更好的方法?

回答

3

你應該更喜歡這種語法定義類

type SampleGame() =  
    inherit Game()  
    let mutable spriteBatch : SpriteBatch = null 
    override this.Initialize() =   
     spriteBatch <- new SpriteBatch(this.GraphicsDevice)   
     base.Initialize()  

,你至少定義一個構造函數的類定義(代碼中的第一個「SampleGame」後的括號以上),以及部分然後使用'let'和'do'來初始化/定義實例變量併爲該構造函數運行代碼,然後定義方法/屬性/覆蓋/等。 (而不是你的語法,在類型名稱後面沒有構造函數parens,對於實例變量使用'val')。

0

我想你必須在使用它們之前聲明你的變量。

type SampleGame = 
    class 
    inherit Game 

    val mutable spriteBatch : SpriteBatch 

    override Game.Initialize() = 
     spriteBatch <- new SpriteBatch(this.GraphicsDevice) 
     base.Initialize() 
    end 
+0

嗯......你可能是對的。我想我被C#寵壞了,讓我在任何地方聲明我的變量! – RCIX 2009-06-12 00:04:20

+0

剛剛測試過,沒有幫助。具體的錯誤是「未定義值或構造函數」spriteBatch「 – RCIX 2009-06-12 00:05:26