【发布时间】:2016-01-23 19:35:38
【问题描述】:
假设我有一个文件
8 [[1,2,3,4],[1,2]]
其中包含列表的数量和列表。
此代码允许我从中读取所有行或第 n 个元素。
import System.IO
main = do
x <- openFile "file.txt" ReadMode
cont <- hGetContents x
let fLines = lines cont
let numb = fLines !! 0 !! 0
print numb
这里numb 是'8'。
如何在不使用其他库的情况下从numb 获取整数 8?
是否有可能读取列表列表并将其用作列表列表?
或者我应该更好地将每个列表写在一个新行中,然后逐行读取它们并添加到空列表中?
也许这是一个愚蠢的问题,但我没有在互联网上找到任何这样做的例子。
更新
感谢 Fractal 的回答,我终于写出了这篇文章
rList :: String -> [[Int]]
rList = read
适用于列表列表!
但是,当我无法使其与单个 Int 一起使用时。
into :: String -> Int
into = read
不知道为什么,但它不适用于numbT_T
更新 2
好吧,这有点愚蠢。 numb 在这里是 Char,所以要让它工作就足够了
print (into [numb])
谢谢大家的回答。
【问题讨论】:
-
索引是否总是一位数?在那个例子中,寻找第一个空格可能会更好。
-
与其用
!!索引flines,不如用words在空白处分割可能更好。这样它就更灵活了,您不必将前导Char转换回String。