F# 在F中实现索引器#

F# 在F中实现索引器#,f#,matrix,indexer,F#,Matrix,Indexer,我正在尝试将此C代码转换为F代码: 基本上,我最大的问题是在F#中创建索引器。我在网上的任何地方都找不到任何适合这种情况的东西。我包括了这个类的几个其他部分,以防将索引器合并到矩阵类型中并不明显。所以,一个好的答案应该包括如何用这三个部分制作一个完整的字体,以及可能需要的其他任何东西。此外,我知道F#powerpack中的矩阵类型,但我正试图通过将我理解的C#项目转换为F#来学习F 提前感谢, Bob称之为“索引属性”;在F#中,它们的工作方式略有不同——每个索引属性都有一个名称 但是,有一个名

我正在尝试将此C代码转换为F代码:

基本上,我最大的问题是在F#中创建索引器。我在网上的任何地方都找不到任何适合这种情况的东西。我包括了这个类的几个其他部分,以防将索引器合并到矩阵类型中并不明显。所以,一个好的答案应该包括如何用这三个部分制作一个完整的字体,以及可能需要的其他任何东西。此外,我知道F#powerpack中的矩阵类型,但我正试图通过将我理解的C#项目转换为F#来学习F

提前感谢,

Bob称之为“索引属性”;在F#中,它们的工作方式略有不同——每个索引属性都有一个名称

但是,有一个名为“Item”的默认项。因此,您的示例的实现如下所示:

member this.Item
  with get(x,y) = matrix.[(x,y)]
  and  set(x,y) value = matrix.[(x,y)] <- value
成员此项
使用get(x,y)=矩阵。[(x,y)]

设置(x,y)value=matrix。[(x,y)]你肯定解决了我问题中最难的部分,所以我会把它标为答案。但是,如果您愿意,请随时根据我上面给出的内容创建整个类型矩阵。我将自己去尝试解决这一部分,但其他人可能会感激它,以供将来参考。谢谢你这么快的回答@比克:你没有在上面发布完整的类型,只是一个构造函数和索引属性。对于任何感兴趣的人,我问了一个问题,这个问题在这里进一步展开:MS的索引属性页面不够清晰。这个回答澄清了问题。我喜欢F处理索引的干净方式。在C++中实现二维索引(在平面数组上)是复杂的。
member this.Item
  with get(x,y) = matrix.[(x,y)]
  and  set(x,y) value = matrix.[(x,y)] <- value