我找到了一个我认为非常适合学习 F# 的快速项目。但是,由于某种原因,我无法将大脑环绕在它周围。经过几个小时的教程甚至一些电影,我仍然只是......不明白。

所以我想开始使用企业管理器“生成脚本”对我们的存储过程进行版本控制,并想清除脚本日期。我放弃并在 C# 中做到了,但现在我真的很好奇,并希望得到一些见解。

我并不是完全空手而归,这是我的 C# 代码:

string path = @"C:\Subversion\CompanyName\SQL\DBName";
string fileSpec = "*.sql";
string pattern = @"Script Date: \d{2}/\d{2}/\d{4} \d{2}:\d{2}:\d{2}";
string replace = "Script Date: ";

foreach (var file in Directory.EnumerateFiles(path, fileSpec))
{
    string content = File.ReadAllText(file);

    content = Regex.Replace(content, pattern, replace);

    File.WriteAllText(file, content, Encoding.Unicode);
}

我猜在 F# 中有一些看起来很酷的 2-3 行解决方案......我很想看到它。

谢谢你的提示!我已经更新它以匹配下面正在做的事情,以使视觉比较可能更具启发性。下面还有很棒的评论。

最佳答案

let path = @"C:\Subversion\CompanyName\SQL\DBName"
let fileSpec = "*.sql"
let pattern = @"Script Date: \d{2}/\d{2}/\d{4} \d{2}:\d{2}:\d{2}"
let replace = "Script Date: "

Directory.EnumerateFiles (path, fileSpec)
|> Seq.iter (fun file ->
    let content = Regex.Replace (File.ReadAllText file, pattern, replace)
    File.WriteAllText (file, content, Encoding.Unicode))

请注意,您的 C# 代码 ( 编辑 : was) 也比必要的冗长得多。

关于c# - F# 伤害了我的大脑...谁能帮助将 C# 翻译成 F#?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7907635/

10-12 17:44