代码之家  ›  专栏  ›  技术社区  ›  Joan Venge

如何将F类型转换为C类型?

  •  5
  • Joan Venge  · 技术社区  · 14 年前

    drawBox
    drawSphere
    paintImage
    

    他们会被调到C#,完全一样吗?

    如果是这样的话,那么它不会损害C#中的命名约定,在C#中,方法应该是pascalase吗?

    或者我应该让它们变成F的pascalase来弥补这个问题吗?

    4 回复  |  直到 14 年前
        1
  •  8
  •   Brian    14 年前

    你应该遵循 F# Component Design Guidelines

    值得注意的是:

    • 对于面向对象的代码,包括面向F的库,请务必使用.NET命名和大写约定。
    • 对于F模块中的公共函数和值,请务必使用Pascalase或camelCase。 invalidArg List.map ). 在这两种情况下,函数名的作用与语言中的关键字非常相似。

    另一种方法是:

    • 类型 应该总是pascalase,就像C#
    • 模块中的let-bound实体可以是camelCase,但这种东西通常不是您在打算由C使用的库中公开的内容#
        2
  •  5
  •   Tomas Petricek    14 年前

    camelCase PascalCase 如果你想在C中使用它们。

    此外,还有一个技巧可以使用(这是在F核心库中用于以下函数的 List.map 实际编译为 List.Map ). 你可以使用 CompiledName 属性指定已编译版本中的名称:

    module Bar = 
      [<CompiledName("Foo")>]
      let foo a = a + 1
    

    使用统一的命名约定可能更好,但是如果您想为F用户保留一个好的短名称,为C用户保留标准的.NET名称,这是一个有趣的选择。

        3
  •  1
  •   desco    14 年前

    F和C中的类型方法名称将相同。如果您希望在C#中使用pascalase,那么应该在F#中使用这个命名约定,camelCase也是如此。

        4
  •  -1
  •   cdkMoose    14 年前

    命名惯例是人类的。编译器和运行时真的不在乎每个变量名是否完全不可读,它们仍然可以工作。