2012-02-14 7 views
0

テキストファイルを読み込み、その中の母音の数を数えたいと思います。 "ParseFile"コンテンツを文字列に変換してcountVowelsに変数として渡す方法を知りたい場合テキストファイルの内容を文字列に変換してFの関数として渡します

明らかに、私が(関数を渡す)方法は機能していません。

open System.IO 
open System 


let ParseFile = File.ReadAllLines("C:\\Users\sid\Desktop\AmazonProductAdvertisingAPI\Documents\File3.txt") 


\\let countVowels(str : string) 

let countVowels (ParseFile) = 
    let charList = List.ofSeq str 

    let accFunc(As, Es, Is, Os, Us) letter = 
     if letter = 'a' then (As+1, Es, Is, Os, Us) 
     elif letter = 'e' then (As, Es+1, Is, Os, Us) 
     elif letter = 'i' then (As, Es, Is+1, Os, Us) 
     elif letter = 'o' then (As, Es, Is, Os+1, Us) 
     elif letter = 'u' then (As, Es, Is, Os, Us+1) 
     else     (As, Es, Is, Os, Us) 

    List.fold accFunc (0, 0, 0, 0, 0) charList 
+2

パラメータの受け渡しはプログラミング101です。このようなことはほぼ完全にF#の文献でカバーされています。 [MSDN](http://msdn.microsoft.com/en-us/library/dd233213.aspx)から始めることができます。 – Daniel

答えて

1

私はあなたのコードを持ついくつかの問題を見ることができます:

がライン:

let ParseFile = File.ReadAllLines("C:\\Users\sid\Desktop\AmazonProductAdvertisingAPI\Documents\File3.txt") 

はどちらか、この行は次のようになります。

let ParseFile = File.ReadAllLines(@"C:\Users\sid\Desktop\AmazonProductAdvertisingAPI\Documents\File3.txt") 

またはそれが

をする必要があります
let ParseFile = File.ReadAllLines("C:\\Users\\sid\\Desktop\\AmazonProductAdvertisingAPI\\Documents\\File3.txt") 

しかし、文字列を "@"でエスケープする必要があるか、バックスラッシュを2倍にしてエスケープする必要があるため、現在の状況では正しくありません。

私は他の問題があると言いますが、最初にそれを修正してから、自分で他の問題を見つけられるかどうか確認してください。 Danielが言ったように、ちょっとした作業でこれを自分で手に入れることができるはずです。

編集:

ああ、私は何年もの間、経験の豊かな開発者からの恩恵を受けてきました。

変更この:これに

let countVowels (ParseFile) = 

let countVowels str = 

次に、あなたのファイルの最後に以下を追加:

countVowels ParseFile 

そして、再び、ダニエルはこの、言ったようにあなたはちょうど始まったばかりなので、彼があなたを指差した参照を読んで、あなたが読んでいるものを理解しようとする時間をとってください。これを習得できなければ、ソフトウェア開発の未来はありません:-)

+0

訂正や提案をありがとうございます。その非常に役立つ。私はscartchからF#を学び、2週間でWebアプリをやろうとしています。はい、私は.NETと機能的なパラダイムを開始しています。それは少しdemotivatingですので、あなたの厳しい発言に感謝してくれました。私はもっと仕事をしてくれました:) – codious

+1

私はタフなシッダールタではありません。私は関数にパラメータを渡すことは_any_プログラミング言語のかなり基本的なコンセプトだと言います(Danielはそうだと思います)。前にC#をやったことがあるなら、構文は少し異なりますが、コンセプトは同じです。あなたのサンプルコードから、あなたがそのコンセプトを把握しているかどうかは分かりません。 –

+0

私は漫画の意味では厳しいの意味:)あなたは正しい概念は私には分かりません。私はそれが全く機能していないから全く違った考えをしています。おそらく間違ったアプローチでしょう。私はスクリプト言語に慣れていないので、プロローグの理解も難しかったです。 – codious

関連する問題