私は最初にオブジェクトを作成するコードをいくつか持っています。次に、さまざまなコマンドに応じてオブジェクトのさまざまな更新を実行したいと思います。haskellのif文で作成されたIO/access変数の変数を更新する方法
main = do
putStrLn "Enter command, c x y, d x y"
s <- getLine
let object = newObject
if head s == 'c' then
let object2 = updateObject object s in
print object
else if head s == 'd' then
let object2 = updateObject object s in
print object
else do
print "Error, try again"
main
putStrLn "Enter new command"
c <- getLine
print $ updateObject object2 c
エラー:
Variable not in scope: object2 :: Object
文は、後で使用することができた場合、変更は内部のオブジェクトに行われるように、私は主な機能のためのオブジェクトは、「グローバル」にするにはどうすればよいですか?
どうすればいいですか?
はちょうどobject2は返す関数を作成します。とにかく、あなたはなぜか、そして、とにかく、両方のパスが同じコードを実行しています – Glubus
ありがとう!彼らはコードが完了したときに別のものになっているはずです。 オブジェクト2を返す関数を作ってどういう意味ですか?関数updateObjectはobject2を返しますが、別のパラメータで異なる時刻に実行します。私はいくつかの異なるifを別々のアップデートで持っています。どのようにすれば、すべての更新で最終的なオブジェクトにアクセスできますか? –
'let object2 = updateObjectオブジェクトs in'は、' in'の後の式のために 'object2'を定義します。あなたは外でそれを使用しようとしています。 Henseコンパイラエラー。 – d12frosted