我来自C#,发现自己爱上了F#模式匹配语法,因为它比C#更简单switch,更有用.我喜欢尽可能地使用它,是否有表现或任何其他缺点,以这种例子中的奇怪方式使用它?
match 0 with
|_ when a<b -> a
|_ -> b
Run Code Online (Sandbox Code Playgroud) 人们常常使用
for i in [0 .. 10] do something
Run Code Online (Sandbox Code Playgroud)
但afaik创建了一个列表然后迭代,在我看来它使用更有意义
for i = 0 to 10 do something
Run Code Online (Sandbox Code Playgroud)
没有创建那个不必要的列表但具有相同的行为.我错过了什么吗?(我猜是这样的)
Resharper建议我打开C#6.0.我喜欢这些变化,但在我看来,Visual Studio 2013和C#6.0并不是真的很喜欢彼此,因为当我将lambdas用于像
public static MVector operator +(MVector l, MVector r) => new MVector(l.X+r.X, l.Y+r.Y);
Run Code Online (Sandbox Code Playgroud)
它说应该有';' 而不是lambda,但没有用红色加下划线.我把所有可能的东西都变成了那个文件中的lambdas并且得到了很多错误,但没有任何标记,这很奇怪.
我真的很喜欢F#,但我觉得这不是简单而且足够短.我想走得更远.我确实知道如何改进它,但我没有制作编译器的经验所以我认为我会使它成为一种脚本语言.然后我意识到我可以使用脚本语言并使用F#解释它,但由于F#有inline选项,它仍然可以获得100%的性能.我对吗?是否真的有可能在F#中创建一个脚本解释器,它将通过我的脚本并将其转换为许多仿函数和东西,从而获得非常好的性能?