我正在研究PDC 2008 F#视频,似乎遇到了问题
type StockAnalyzer (lprices, days) =
let prices =
lprices
|> Seq.map snd
|> Seq.take days
static member GetAnalyzers(tickers, days) =
tickers
|> Seq.map loadPrices
|> Seq.map (fun prices -> new StockAnalyzer(prices, days))
member s.Return =
let lastPrice = prices |> Seq.nth 0
let startPrice = prices |> Seq.nth (days - 1)
lastPrice / startPrice - 1.
我在静态时遇到错误。
GetStockPrices.fs(31,6):错误FS0010:绑定中出现意外的关键字'static'。此点或其他标记之前或之前的预期不完整结构化构造。有谁知道他们是否改变了语法或者能够发现我做错了什么
答案 0 :(得分:13)
F#使用了很大的空白区域。在“let prices =”前面添加一个空格。编译器试图弄清楚为什么你有一个“价格”的静态成员,因为缩进较少的前一行是“let prices =”。
为了清晰起见,您可能需要使用更多缩进。
type StockAnalyzer (lprices, days) =
let prices =
lprices
|> Seq.map snd
|> Seq.take days
static member GetAnalyzers(tickers, days) =
tickers
|> Seq.map loadPrices
|> Seq.map (fun prices -> new StockAnalyzer(prices, days))
member s.Return =
let lastPrice = prices |> Seq.nth 0
let startPrice = prices |> Seq.nth (days - 1)
lastPrice / startPrice - 1.
答案 1 :(得分:6)
单词static
之前的缩进使编译器感到困惑,并且它试图将其解释为let
表达式的一部分。 let
表达式应缩进,成员定义应与其一致。