gpt4 book ai didi

Haskell:读取包含 Int 和 Float 的行的简单方法?

转载 作者:行者123 更新时间:2023-12-02 12:15:32 26 4
gpt4 key购买 nike

我想从如下所示的文件中读取行:

1 2.1
2 2.2
3 2.3

每行都有一个简单的 Int 和 Float

这就是我想出的方法,阅读每一行:

readFoo :: String -> (Int, Float)
readFoo line = (read (splitOn " " line !! 0), read (splitOn " " line !! 1))

或者我也做了一个数据类型,然后读取部分就简单了。

data Foo = Foo Int Float deriving (Show, Read)
getM (Foo m p) = m
getP (Foo m p) = p

readFoo :: String -> Foo
readFoo line = read $ "Foo " ++ line :: Foo

但是一定有更简单的方法来做到这一点,对吗?

最佳答案

表达这一点的一种巧妙方法是使用 ViewPatterns扩展名

{-# LANGUAGE ViewPatterns #-}

readFoo :: String -> (Int, Float)
readFoo (words -> [read -> i, read -> f]) = (i ,f)

用标准 Haskell 编写它的另一种方法是例如

readFoo :: String -> (Int, Float)
readFoo ln = (read i, read f) where
[i, f] = words ln

当然,所有这些都假设您不关心错误处理。

关于Haskell:读取包含 Int 和 Float 的行的简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21075901/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com