小编Ngh*_*Bui的帖子

活动模式的重点是什么?

当我们使用Active Patterns对值进行模式匹配时,将隐式调用一个“转换”函数。所以不用写:

match value with
| Tag1 -> ...
| Tag2 -> ...
Run Code Online (Sandbox Code Playgroud)

我可以明确地写:

match convert value with
| Tag1 -> ...
| Tag2 -> ...
Run Code Online (Sandbox Code Playgroud)

这样,我不必在这里使用活动模式。当然,我必须显式调用该convert函数,并且必须显式声明一个联合类型。但这对我来说是次要的事情。

那么活动模式的重点是什么?

f#

9
推荐指数
1
解决办法
93
查看次数

为什么在F#中重新定义了一些通用标准?

我几天前开始使用F#,但我不明白为什么重新定义了一些很长时间以来很普遍的事情?

  • 例如/* my comment */,在几种语言中很常见,几十年来一直如此。真的有理由去(* my comment *)吗?
  • 具有用定义的变量type variablename(例如,int i这也是很常见的),难于解析该类型之前和之后的类型吗?
  • 同样,几乎所有语言都有!=不平等现象;是<>为了避免与其他事物发生冲突或只是“变得与众不同” 而进行了更改?
  • <-与可变项一起使用,但=不可变..其背后的原因是什么?

我敢肯定还有其他几个。

我不是在寻找有关更改是否良好的“意见”,但我很想知道它们背后是否存在某些特定的推理,例如简化解析等,因为我想知道这些变化的好处大于不遵循普遍采用的公约的危害。

f#

3
推荐指数
1
解决办法
82
查看次数

C#中的快速memcpy

我想用这样的原型编写一个C#方法:

void memcpy(byte[] dst, int dstOffset, byte[] src, int srcOffset, int len);
Run Code Online (Sandbox Code Playgroud)

这个方法有2个选项:

1.

void memcpy(byte[] dst, int dstOffset, byte[] src, int srcOffset, int len)
{
    for (int i = 0; i < len; i++)
    {
        dst[dstOffset + i] = src[srcOffset + i];
    }
}
Run Code Online (Sandbox Code Playgroud)

2.

void memcpy(byte[] dst, int dstOffset, byte[] src, int srcOffset, int len)
{
    IntPtr intPtr = getIntPtr(dst, dstOffset);
    System.Runtime.InteropServices.Marshal.Copy(src, srcOffset, intPtr, len);
}

IntPtr getIntPtr(byte[] buffer, int offset)
{
    IntPtr intPtr;
    unsafe
    {
        fixed (byte* …
Run Code Online (Sandbox Code Playgroud)

c# performance memcpy

0
推荐指数
1
解决办法
8160
查看次数

标签 统计

f# ×2

c# ×1

memcpy ×1

performance ×1