![]() |
1
31
我并不是为了让自己堕落,而是在我的博客上写了几篇F#概述文章 here 和 here . 克里斯·史密斯(MS F#团队成员)有一篇文章叫《20分钟后F#》- part 1 part 2 . 注意:您必须小心,因为与以前的版本相比,F#(版本1.9.6.0)的最新CTP有一些严重的变化,因此一些示例/教程如果不进行修改可能无法工作。 这里有一些很酷的东西,也许我可以给你一些提示,这些提示很清楚 非常 简短,可能不太好,但希望能给你一些东西玩- 首先要注意的是,互联网上的大多数示例都假设“轻量级语法”已打开。要实现这一点,请使用以下代码行:-
这就避免了您必须插入某些为OCaml兼容性而存在的关键字,以及必须以分号结束每一行。注意,使用此语法意味着缩进定义范围。这将在后面的示例中变得清晰,所有这些示例都依赖于打开的轻量级语法。 如果使用交互模式,则必须使用双分号终止所有语句,例如:-
使用“let”关键字定义函数。这可能是所有F#中最重要的关键字,您将经常使用它。例如:-
我们可以这样称这些函数:-
注意,我们从表达式“sumStuff 1”中获取一个函数。当我们可以像传递数据一样轻松地传递函数时,数据被称为具有“第一类函数”的语言,这是任何函数语言(如F#)的基本部分。
注意:当我们想要匹配某个内容,但返回的表达式不依赖于输入时,我们会使用“u”符号。 我们可以根据需要使用if、elif和else语句简化模式匹配:-
F#列表(在下面作为链表实现)可以通过以下方式进行操作:-
注意:List.map函数将平方函数从1映射到10,即将函数应用到每个元素。List.filter通过仅返回列表中通过提供的谓词函数的值来过滤列表。还要注意“有趣的x->f'语法-这是f#lambda。 请注意,在整个过程中,我们没有定义任何类型——F#编译器/解释器“推断”类型,即从使用中得出您想要的结果。例如:-
这里,编译器/解释器将确定x是字符串,因为您正在执行一个要求x是字符串的操作。它还确定返回类型也将是字符串。 当存在歧义时,编译器会做出假设,例如:-
还要注意,我们必须将x:string括在括号中,我们通常必须这样做来分隔函数定义的各个部分。 F#中两个非常有用且大量使用的运算符是管道前进运算符和函数组合运算符|>及>&燃气轮机;分别地
这使您能够以更清晰的方式书写内容,例如:-
将允许您获得前10个偶数正方形。这比:-
由>&燃气轮机;运算符的定义如下:-
也就是说,只有在第一个函数的参数未指定的情况下,才能转发操作。这很有用,因为您可以执行以下操作:-
一些很酷的东西:-
n次斐波那契数
嘶嘶作响
简要概述,希望对您有所帮助!! |
![]() |
2
6
我发现它教会了我很多有用的技巧来编写功能更强大的C#以及提供开始编写Windows托管的F#应用程序所需的所有参考资料。 |
![]() |
3
5
现在,让我开始编码:-)
|
![]() |
4
3
Real World Functional Programming 托马斯·佩特里切克(Tomas Petricek)在《F#》和《C#by》中举例说明 到目前为止,我发现它非常擅长通过展示C语言的实现来教授F#概念。非常适合面向对象程序员。 |
![]() |
5
2
|
![]() |
6
1
查看 F# Developer Center . 还有 hubFS |
![]() |
7
1
如果您在VisualStudio中有当前的CTP版本,它允许您创建一个F#Tutorial项目,该项目将为您提供一个Tutorial.fs,确切地包含它的名称。 该教程还指出了一个更大的 F# examples at Microsoft CodePlex . 希望这有帮助, 米希尔 |
![]() |
Thomas · 使类型别名在F中不可互换# 3 年前 |
![]() |
sdgfsdh · 我该怎么说。使用异步转换函数进行收集? 7 年前 |
![]() |
Soldalma · 我可以实例化包含顶级副作用值的类吗? 7 年前 |
![]() |
matekus · F#-包含数字的字符串的自然排序 7 年前 |
![]() |
matekus · F#类型匹配-无法创建映射或匹配记录 7 年前 |
![]() |
Rob Lyndon · 未找到F#ProvidedTypes文件 7 年前 |
![]() |
red-swan · 如何将intro ML.Net演示翻译为F#? 7 年前 |
![]() |
jkone27 · F#-在编译时从字符串生成简单的空类型 7 年前 |