F# 一组特殊类型的元组?
我有以下函数来设置HttpWebRequest的Http头 但是,我还想设置KeepAlive和AlowAutoRedirect,它们的类型是bool。以下代码将失败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
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
| ...