从传递给 C# 的 F# 列表中检索项目

2024-04-14

我在 C# 中有一个在 F# 中调用的函数,将其参数传递到Microsoft.FSharp.Collections.List<object>.

如何从 C# 函数中的 F# 列表中获取项目?

EDIT

我找到了一种“函数式”风格的方式来循环它们,并且可以将它们传递给如下函数以返回 C# System.Collection.List:

private static List<object> GetParams(Microsoft.FSharp.Collections.List<object> inparams)
{
    List<object> parameters = new List<object>();
    while (inparams != null)
    {
        parameters.Add(inparams.Head);
        inparams = inparams.Tail;
     }
     return inparams;
 }

再次编辑

正如下面指出的,F# List 是 Enumerable,因此上面的函数可以用以下行替换;

new List<LiteralType>(parameters);

但是,有什么方法可以通过索引引用 F# 列表中的项目吗?


一般来说,避免将 F# 特定类型(如 F#“列表”类型)暴露给其他语言,因为体验并不是那么好(如您所见)。

F# 列表是一个 IEnumerable,因此您可以创建例如通过这种方式很容易获得 System.Collections.Generic.List 。

没有有效的索引,因为它是一个单链表,因此访问任意元素的时间复杂度为 O(n)。如果您确实需要索引,最好更改为其他数据结构。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从传递给 C# 的 F# 列表中检索项目 的相关文章

随机推荐

  • 迭代 EnumMap#entrySet

    枚举结束Map entrySet对于所有 Map 实现 特别是 EnumMap 不能按预期工作 IdentityHashMap这是 Josh Bloch 的示例代码谜题演示 谜题 5 http strangeloop2010 com sys
  • 一次热编码期间出现 RunTimeError

    我有一个数据集 其中类值以 1 步从 2 到 2 i e 2 1 0 1 2 其中 9 标识未标记的数据 使用一种热编码 self one hot encode labels 我收到以下错误 RuntimeError index 1 is
  • Python:第二个for循环未运行

    scores surfers results f open results txt for each line in results f name score each line split scores append float scor
  • __attribute__ 是否适用于声明中的所有变量?

    是否 attribute 指令适用于在一行中声明的所有成员 int a b c 声明三个 int 变量 int a b c 将变量 a 声明为 int 指针 将 b 和 c 声明为 int int attribute used a b c
  • 如何检测 firebase firestore 数据库中的实时侦听器错误?

    火库听众 https firebase google com docs firestore query data listen将在一段时间后随机关闭 可能是由于不活动 并且在 python 中没有简单的方法来捕获它们抛出的错误 因为它们将它
  • 我需要 T-SQL 中的国家/地区列表

    我有一个国家 地区表 其中包含国家 地区名称列 我需要 DDL 中现成的列表来填充 CountryName 列 该表驻留在 SQL Server 2008 中 你可以尝试这个脚本 CREATE TABLE tbl Countries Cou
  • 使用 D3.js 单击切换图例时重绘堆栈条形图

    我想使用 D3 js 实现带有切换图例的堆栈栏 单击图例时 堆栈栏应重新绘制 如果图例处于活动状态 则与图例对应的矩形板应消失 反之亦然 单击图例时 我无法正确更新与组元素和组元素内存在的矩形元素绑定的数据 在 DOM 树中 单击图例 矩形
  • c# protobuf-net反序列化时某些属性值始终为-1

    在我没有注意到这一点之前 我不确定这个问题是否是错误 或者只是这个 我创建一个Document类并声明 protobuf net 限制 ProtoContract public class Document ProtoMember 1 pr
  • 打开本地项目钥匙串?

    有谁知道如何打开本地物品钥匙串 小牛队的新功能 SecKeychainOpen 我希望能够请求用户允许使用该钥匙串中的某些条目进行访问SecKeychainFindInternetPassword 例如对于您调用的系统钥匙串SecKeych
  • 如何使用“typedef NS_ENUM”在一个 .h 文件中定义多个变量类型

    我用过typedef NS ENUM重新组织旧代码中的数据常量 使用方法在这里找到 https stackoverflow com a 42009056 2348597 every typedef被声明在一个单一的 h可以导入到项目中任何类
  • Rails 会话中存储的对象变成了字符串?

    通常我不会在 Rails 会话中存储对象 但我正在使用需要此功能的库 我遇到了一个非常奇怪的问题 其中存储的对象在重定向后显示为字符串 为了重现 我创建了一个示例 Rails 4 1 应用程序 rails new session test
  • 如何编写从配置文件中获取值的自定义正则表达式验证器?

    我必须在模型中对用户名属性使用正则表达式验证器 我从配置文件中获取这个正则表达式 RegularExpression UsernameValidationExpression UsernameValidationExpression val
  • 如何在打字中安装express?

    我正在尝试在我的应用程序中使用expressjs 安装后使用typings install express ambient save I run tsc 但我收到两个错误 types main ambient express index d
  • 使用 OpenCV 对非正面图像进行人脸检测

    我正在尝试使用 opencv 来检测人脸 脸部不是正面 相机从侧面拍摄脸部 因此只能看到一只眼睛和部分嘴巴 我尝试了具有多种配置的 HaarDetectObjects 但没有获得任何好处 我改变了级联并进行了测试 haarcascade f
  • 在折线图中的特定点添加标记

    我正在绘制一个绘图线图 并希望使用标记突出显示线图上的特定点 其中数据框中的另一列不是 NA 此外 当我将鼠标悬停在绘图上时 我只想查看位于标记点上的 y 值 而不是绘图的其余部分 这是一个可重现的示例 到目前为止我已经尝试做到这一点 li
  • 使用 Python 检测 OpenCV 中的线条和形状

    我一直在使用 OpenCV cv2 并检测线条和形状 假设我女儿画了一幅图画 如下所示 我正在尝试编写一个Python脚本来分析绘图并将其转换为硬线条 形状 例如 话虽这么说 我已经安装了 opencv 并尝试使用它 但除了能够在图像中绘制
  • 如何设置扭曲的日志记录级别?

    我正在使用带有twisted的autobahn包 它会在每次连接到websocket时显示调试消息 我尝试将日志记录级别切换为信息但没有成功 import logging logging basicConfig level logging
  • 如何通过 Java 运行我的 haskell 函数

    假设我有一个 haskell 函数add in math hs 我怎样才能运行add通过Java程序运行函数并将输出存储为变量 也许像下面这样 public int runHaskell String haskellFile int out
  • 如何在 MATLAB 中编写向量化函数

    我刚刚学习MATLAB 我发现很难理解循环与矢量化函数的性能因素 在我之前的问题中 MATLAB 中的嵌套 for 循环非常慢 预分配 https stackoverflow com q 7811239 518169我意识到使用向量化函数与
  • 从传递给 C# 的 F# 列表中检索项目

    我在 C 中有一个在 F 中调用的函数 将其参数传递到Microsoft FSharp Collections List 如何从 C 函数中的 F 列表中获取项目 EDIT 我找到了一种 函数式 风格的方式来循环它们 并且可以将它们传递给如