【问题标题】:F# static memberF# 静态成员
【发布时间】:2011-01-24 19:20:09
【问题描述】:

我正在浏览 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:绑定中出现意外的关键字“静态”。预计此时或之前的不完整结构化构造或其他标记。
有谁知道他们是否改变了语法或能发现我做错了什么

【问题讨论】:

    标签: f#


    【解决方案1】:

    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.
    

    【讨论】:

      【解决方案2】:

      单词static 之前的缩进使编译器感到困惑,它试图将其解释为let 表达式的一部分。 let 表达式应缩进,成员定义应与之保持一致。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-12-20
        • 1970-01-01
        • 2010-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多