我正在编写生成框图的编程代码.我正在尝试将我的代码拆分为模块(函数).第一个模块生成框图.其他模块要求输入块的名称并将其保存为字符串(行),但它不允许将这些字符串导出到其他模块(我想将这些字符串导出为变量并在其他模块中使用块的名称).可能有什么问题?也许有人已经发现同样的问题,并有解决方案?先感谢您!Input.hs代码:
module Input (firstName, secondName, thirdName, fourthName) where
import Data.Char
main = do
putStrLn "Iveskite pirmo bloko pavadinima"
firstName <- getLine
putStrLn "Iveskite antro bloko pavadinima"
secondName <- getLine
putStrLn "Iveskite trecio bloko pavadinima"
thirdName <- getLine
putStrLn "Iveskite ketvirto bloko pavadinima"
fourthName <- getLine
Run Code Online (Sandbox Code Playgroud)
从模块导出名称时module Input (firstName, secondName, thirdName, fourthName) where,必须在顶级定义这些名称,因此必须静态绑定.你可以做类似的事情
module Input (getNames) where
import Data.Char
getNames :: IO (String, String, String, String)
getNames = do
putStrLn "Iveskite pirmo bloko pavadinima"
firstName <- getLine
putStrLn "Iveskite antro bloko pavadinima"
secondName <- getLine
putStrLn "Iveskite trecio bloko pavadinima"
thirdName <- getLine
putStrLn "Iveskite ketvirto bloko pavadinima"
fourthName <- getLine
return (firstName, secondName, thirdName, fourthName)
Run Code Online (Sandbox Code Playgroud)
然后你可以从另一个文件
module Other where
import Input
doSomething :: IO ()
doSomething = do
(n1, n2, n3, n4) <- getNames
putStr "You entered:"
putStr $ " " ++ n1
putStr $ " " ++ n2
putStr $ " " ++ n3
putStr $ " " ++ n4
putStrLn ""
Run Code Online (Sandbox Code Playgroud)