F# 一组特殊类型的元组?

F# 一组特殊类型的元组?,f#,F#,我有以下函数来设置HttpWebRequest的Http头 但是,我还想设置KeepAlive和AlowAutoRedirect,它们的类型是bool。以下代码将失败 let headers = [ "accept", "*/*"; "Accept-Encoding", "gzip,deflate,sdch"; "Accept-Charset", "UTF-8,*;q=0.5"; "KeepAlive", true ] // cannot have bool h

我有以下函数来设置HttpWebRequest的Http头

但是,我还想设置KeepAlive和AlowAutoRedirect,它们的类型是bool。以下代码将失败

let headers = [
    "accept", "*/*";
    "Accept-Encoding", "gzip,deflate,sdch"; 
    "Accept-Charset", "UTF-8,*;q=0.5";
    "KeepAlive", true ] // cannot have bool here
在F中实现它的好方法是什么

A是F-ish的方法;您可以将一个case用于字符串值,另一个case用于布尔值

假设在模式匹配的某些情况下,您显式地设置了特定属性,那么也可以分别为每个属性设置一个案例:

type Headers =
    | StringHeader of string * string
    | BoolHeader of string * bool
    | Accept of string
    ...
然后

在您的InnerRequest代码中:

A将是F-ish的做法;您可以将一个case用于字符串值,另一个case用于布尔值

假设在模式匹配的某些情况下,您显式地设置了特定属性,那么也可以分别为每个属性设置一个案例:

type Headers =
    | StringHeader of string * string
    | BoolHeader of string * bool
    | Accept of string
    ...
然后

在您的InnerRequest代码中:


谢谢这将是一个受歧视的大联盟。我已经更新了这个问题,它显示了很多头都是由req.headers设置的。[header]只需要做两个例子,一个是string*string,另一个是string*bool。谢谢。这将是一个受歧视的大联盟。我已经更新了这个问题,它显示了许多头是由req.headers设置的。[header]只需要做两个例子,一个是string*string,另一个是string*bool。
type Headers =
    | StringHeader of string * string
    | BoolHeader of string * bool
    | Accept of string
    ...
let headers =
    [Accept "*/*" ;
     StringHeader ("Accept-Encoding", "gzip,deflate,sdch") ;
     BoolHeader ("KeepAlive", true) ]
for header in headers do
    match header with
    | StringHeader (name, value) -> req.Header.[name] <- value
    | BoolHeader (name, value) -> ... // however you set a bool property
    | Accept value -> req.Accept <- value 
    | ...