Seq.cast 从对象到字符串的元组值
Seq.cast tuple values from obj to string
做这样的演员表有什么好的和有效的方法?
seq { yield (box "key", box "val") }
|> Seq.cast<string*string>
因为这看起来非常丑陋:
seq { yield (box "key", box "val") }
|> Seq.map (fun (k,v) -> k.ToString(), v.ToString())
还有这个:
seq { yield (box "key", box "val") }
|> Seq.map (fun (k,v) -> unbox<string>(k), unbox<string>(v))
有没有办法将一个元组 "unbox" 变成另一个元组?
你可以写得更好一点:
seq { yield (box "key", box "val") }
|> Seq.map (fun (k, v) -> string k, string v)
但是,假设您有一个 Tuple2
模块:
module Tuple2 =
// ... other functions ...
let mapBoth f g (x, y) = f x, g y
// ... other functions ...
有了这样的 mapBoth
函数,您可以将演员表写成:
seq { yield (box "key", box "val") } |> Seq.map (Tuple2.mapBoth string string)
FSharp.Core中没有Tuple2
模块,但我经常在我的项目中定义一个,包含各种方便的单行代码,如上面的那个。
做这样的演员表有什么好的和有效的方法?
seq { yield (box "key", box "val") }
|> Seq.cast<string*string>
因为这看起来非常丑陋:
seq { yield (box "key", box "val") }
|> Seq.map (fun (k,v) -> k.ToString(), v.ToString())
还有这个:
seq { yield (box "key", box "val") }
|> Seq.map (fun (k,v) -> unbox<string>(k), unbox<string>(v))
有没有办法将一个元组 "unbox" 变成另一个元组?
你可以写得更好一点:
seq { yield (box "key", box "val") }
|> Seq.map (fun (k, v) -> string k, string v)
但是,假设您有一个 Tuple2
模块:
module Tuple2 =
// ... other functions ...
let mapBoth f g (x, y) = f x, g y
// ... other functions ...
有了这样的 mapBoth
函数,您可以将演员表写成:
seq { yield (box "key", box "val") } |> Seq.map (Tuple2.mapBoth string string)
FSharp.Core中没有Tuple2
模块,但我经常在我的项目中定义一个,包含各种方便的单行代码,如上面的那个。