在利用TypeProvider时如何删除重复的字符串值?
我有以下逻辑:
type MovieProvider = JsonProvider<"https://facebook.github.io/react-native/movies.json">
let getMovies() =
async {
let! result = MovieProvider.AsyncLoad "https://facebook.github.io/react-native/movies.json"
return result.Movies
|> Array.toList
|> List.map (fun m -> { Title=m.Title; Year=m.ReleaseYear })
}
Run Code Online (Sandbox Code Playgroud)
我想通过执行以下操作来删除硬编码URL的重复:
let url = "https://facebook.github.io/react-native/movies.json"
type MovieProvider = JsonProvider<url>
let getMovies() =
async {
let! result = MovieProvider.AsyncLoad url
return result.Movies
|> Array.toList
|> List.map (fun m -> { Title=m.Title; Year=m.ReleaseYear })
}
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误:
type MovieProvider = JsonProvider<url>
Run Code Online (Sandbox Code Playgroud)
错误这不是有效的常量表达式或自定义属性值
摘要
那么F#中用于管理硬编码值复制的建议做法是什么?
在C#中,我只是声明一个常量.
要在F#中将值文本声明为编译时常量,请使用该[<Literal>]属性.
[<Literal>]
let url = "https://facebook.github.io/react-native/movies.json"
Run Code Online (Sandbox Code Playgroud)
或者等价的
let [<Literal>] url = "https://facebook.github.io/react-native/movies.json"
Run Code Online (Sandbox Code Playgroud)