私は最初のCS学生です。私たちは関数型プログラミングで時間を終え、オブジェクト指向プログラミングに移行しました。私は現在、動物の間でレースを模倣しなければならない課題に取り組んでいます。これらの動物には、体重、最大速度などを定義するいくつかの属性とメソッドが与えられています。コードの要件の1つは、呼び出される各インスタンスの重みを決定するランダム変数を生成する必要があることです。これまでのところ、私は私のコードでは、この時点になってきた:F#getとsetを使用しても、値またはコンストラクタが定義されていません
let rnd = System.Random()
type Animal (name:string, animalWeight:float, maxSpeed:float) = class
let mutable foodInTakePercentage = float(rnd.Next(0,101))
member val animalMaxSpeed : float = maxSpeed with get, set
member val animalWeight = animalWeight with get, set
member val neccesaryFoodIntake = 0.0 with get, set
member val Name = name
new (name, maxSpeed) =
let minWeight = 70.0
let maxWeight = 300.0
let Weight = minWeight + rnd.NextDouble() * (maxWeight-minWeight)
Animal (name, Weight, maxSpeed)
member this.FoodInTakePercentage = foodInTakePercentage/100.0
member this.CurrentSpeed =
this.FoodInTakePercentage*maxSpeed
abstract FoodIntake : float
default this.FoodIntake = 0.5
member this.NeccesaryFoodIntake =
neccesaryFoodIntake <- animalWeight * FoodIntake
end
type Carnivore (name:string, animalWeight:float, maxSpeed:float) = class
inherit Animal (name, animalWeight, maxSpeed)
override this.FoodIntake = 0.08
end
type Herbivore (name:string, animalWeight:float, maxSpeed:float) = class
inherit Animal (name, animalWeight, maxSpeed)
override this.FoodIntake = 0.4
end
問題はこれがコンパイルされたとき、私はエラーメッセージを受け取ることです:
10g.fsx(22,5): error FS0039: The value or constructor 'neccesaryFoodIntake' is not defined
を私は非常に限られたのすべてを(試してみました知識)を変数として定義しようとするが、何も動かないようだ。誰にもアイデアはありますか?
はい、私はコード全体をアップロードするのを忘れてしまったので、NeccesaryFoodIntakeの動作は不明です。しかし、最終的には、私が変更したい変数は、それが動物の種類(肉食動物か野生動物か)に依存します。コード全体をアップロードすれば、おそらく私の意図を明確にします: – VanTheMan
はい、NeccesaryFoodIntakeは何をしていますか?コード全体をアップロードします。しかし、最終的には、私が変更したい変数は、動物の種類(肉食動物か野生動物か)によって異なります。コードをさらにアップロードすると、おそらく事を明確にすることができます: 型Carnivore(name:string、animalWeight:float、 maxSpeed:フロート)=クラス 継承動物(名前、animalWeight、maxSpeed) オーバーライドthis.FoodIntake = 0.08 エンド型草食動物(名称:文字列、animalWeight:フロート、maxSpeed:フロート)=クラス 継承動物(名前、end – VanTheMan
これらは実際には「NecessaryFoodIntake」に触れません。 –