2017-03-21 10 views
2

をMAKE以下読み込み値がエラーをスローします - FAKE F#のを私はFAKEからXMLファイルから値を読み取るしようとしています、しかし、私はエラーを取得しています

.fsx(9,16) : eror FS000: Incomplete structurd construct at or before this 
point in expression. Expected '->' or other token. 

つまり、私が使用しています、私のコードですXMLHelper.XMLRead xmlファイルから値を読み取る。以下は

#r "./packages/FAKE/tools/FakeLib.dll" 
open Fake 
open Fake.XMLHelper 
Target "BuildMain" (fun _ -> 
    for s in XMLHelper.XMLRead true "D:/test/Version.Config" "/version/major/minor" 
     trace s) 
"BuildMain" 
RunTargetOrDefault "BuildMain" 

私のXMLファイルです:

<version> 
    <major number="2"> 
    <minor>1</minor> 
    <build>1</build> 
    <revised>1</revised> 
    </major> 
</version> 

ここで私は、マイナーバージョンから値を読み取るしようとしている、と私は後でこれを使用できるように、また、私は、変数にこの値を格納できますか?

答えて

2

for ... in構築物は、体の前doまたは矢印->のいずれかが必要です。

for s in XMLHelper.XMLRead true "D:/test/Version.Config" "/version/major/minor" do 
    trace s 

体は同様に、別のループまたはちょうど副作用のコードである場合は、doを使用します。

for x in 1..5 do 
    printfn "%d" x 

矢印->を使用すると、本体に値が生成され、結果のリストまたはシーケンスの一部になります。

let evenNumbers2to10 = [for x in 1..5 -> x*2] 

矢印->do yieldためのショートカットとして見ることができます。

let evenNumbers2to10 = [for x in 1..5 do yield x*2] 
+0

私はあなたが言及したように、ループのためにトレースのをやっM、私はタイプ「(文字列、つまりエラーを取得しています - >文字列 - > seq ) 'は、このsyantaxで値を列挙できる型ではありません。すなわち、seq <_>、IEnumerable <_>またはIEnumerableと互換性がなく、GetEnumeratorメソッドを持たない – JFI

+0

['XMLRead'](https: /github.com/fsharp/FAKE/blob/master/src/app/FakeLib/XMLHelper.fs#L14-14)関数にはさらに2つのパラメータがあります。 –

+0

はい、今それは働いています..あなたの努力をありがとう:) – JFI

関連する問題