如何在利用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 })
}
我想通过执行以下操作来删除硬编码网址的重复:
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 })
}
但是,我收到以下错误:
type MovieProvider = JsonProvider<url>
错误这不是有效的常量表达式或自定义属性 值
摘要
那么F#中用于管理硬编码值复制的建议做法是什么?
在C#中,我只是声明一个常量。
答案 0 :(得分:6)
要在F#中将值文字声明为编译时常量,请使用[<Literal>]
属性。
[<Literal>]
let url = "https://facebook.github.io/react-native/movies.json"
或等效
let [<Literal>] url = "https://facebook.github.io/react-native/movies.json"