2016-11-02 24 views
1

如何在利用TypeProvider時刪除重複的字符串值?如何在利用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 }) 
    } 

我想通過做去除硬編碼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 }) 
    } 

不過,我收到以下錯誤:

type MovieProvider = JsonProvider<url> 

Error This is not a valid constant expression or custom attribute value

摘要

那麼,什麼是F#中建議的做法來管理硬編碼值的重複?

在C#中,我只是聲明一個常量。

+1

對於這個特定的目的,使用'MovieProvider.GetSample()'。這就是它的目的。 –

回答

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" 
相關問題