[] 与 F# 中的其他常量有何不同

2024-02-28

我对 Literal 关键字以及为什么它在 F# 中是必要的感到有点困惑。

阅读文档,我觉得[<Literal>]用于定义一个常量,但是我有点困惑这个常量与 F# 中的所有其他常量有何不同。

打算作为常量的值可以用 文字属性。该属性具有使值变为 被编译为常量。

当我想到常数时,我想到的是一些不可变的东西......

let x = "a" + "b" //this is a immutable value, its value is constant
[<Literal>]
let y = "a" + "b" //this is also a immutable value, but why is this a special constant?

是否因为“正常”F# 值被延迟计算并且[<Literal>]没有被懒惰地评估..?这就是他们所说的“编译为常量”的意思吗?或者还有别的什么吗?


在你的例子中,x是在运行时分配的不可变值(但不延迟计算),而y在编译时分配。举个例子,

let myDLL = "foo.dll"

[<DllImport(myDLL, CallingConvention = CallingConvention.Cdecl)>]
extern void HelloWorld()

不起作用,因为 DllImport 是一个属性,需要知道其值myDLL编译期间。但是,这会起作用:

[<Literal>]
let myDLL = "foo.dll"

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

[] 与 F# 中的其他常量有何不同 的相关文章

随机推荐

  • matplotlib:子图背景(轴面+标签)颜色[或图/轴坐标系]

    我有一个包含 3x2 子图的图形 我想在中间一对子图上设置背景颜色 以便更清楚哪些轴标签属于哪个子图 Setting facecolor构建子图时 仅更改轴定义的区域的颜色 刻度线和轴标签仍然绘制在figure patch 假设没有简单的方
  • ionic 使用获取上一页名称

    我用的是离子2 我需要获取上一页的名称 这是我的代码 ViewChild Nav nav Nav constructor this nav app viewDidEnter subscribe view gt console log Cur
  • 在 Openlayers 中单击地图外部时如何激活功能 + 弹出窗口?

    我正在重新解析已加载到地图上的 KML 类似于此处的示例 http openlayers org dev examples sundials html http openlayers org dev examples sundials ht
  • 适用于 SQL Server 的 Microsoft OLE DB 提供程序是否支持 TLS 1.2

    我们的客户端最近从 TLS 1 0 升级到 TLS 1 2 此后我们的软件无法与 SQL Server 连接 它使用 OLE DB 提供程序连接到 SQL 服务器 以下是从 SQL 服务器返回的错误 DBNETLIB ConnectionO
  • 有什么方法可以在不更改格式的情况下比较 Git 中的两个文件吗?

    我已经提交了一些具有某种格式的代码 但源有一些其他格式 审阅者要求我恢复所有更改 我正在寻找一些 UI 工具或 Git 中的某种方式来删除格式并给出实际结果 我想你可能会看看 git diff 特别是以下两个选项 b ignore spac
  • Qt Mac(删除编辑菜单中的“特殊字符...”操作

    我正在 Qt 中开发一个应用程序 它经常重建其菜单 然而 当我们调用clear 并在菜单中重新添加我们想要的操作时 特殊字符 似乎保留在菜单中 有什么方法可以删除或将此操作移动到 QMenu 的底部吗 这是重建菜单的代码 void Main
  • 从用户上下文中的守护进程启动代理

    我有一个启动守护程序 它在 Mac OSX 10 6 计算机的登录上下文中运行 我想从该代理为每个用户启动一个代理 并让该代理在用户的登录上下文中运行 但是 我需要非常仔细地控制代理应用程序的精确参数 这就是为什么我不能使用 launchd
  • 如何在cocos 2d中移动背景

    你好 我想开发像 涂鸦跳跃 这样的游戏 但是我对以下功能有一些问题 1 如何移动背景场景 图像 2 如何检测对象之间的碰撞 是否需要像box2d这样的物理引擎 或者我应该使用手动碰撞 3 背景图片的大小应该是多少 4 事实上我不知道背景是如
  • 解决方案资源管理器中的引用未更新

    我通过解决方案资源管理器添加了对我的 C Windows 项目的一些引用 当我尝试在另一台计算机上加载相同的项目时 我在 Visual Studio 无法检测到的所有引用上看到黄色标记 因此 我安装了所有被引用的库 但 Visual Stu
  • 在继续 Google Apps 脚本之前等待异步请求返回

    我当前正在生成的 Google Apps 脚本中的一些代码需要一个对象来完成 其中一个属性由异步请求的结果设置 这个对象 特别是这个属性 稍后会被使用 但是 由于在需要该属性的函数运行时请求尚未返回 因此它们无法正确评估 我的代码如下 fu
  • 字符数组的初始值设定项字符串太长 C

    我正在开发一个程序 它接受输入并输出与输入相对应的数值 我在 char 部分收到错误 我不明白为什么当数组中只有 27 个字符且大小为 27 时会出现这样的错误 int main char greek 27 ABGDE ZYHIKLMNXO
  • 为三个不同标识符之间的任意匹配组合创建单个 ID

    我的客户数据来自多个不同的系统 具有三个潜在的唯一标识符 我们需要创建一个新 ID 可用于链接三个标识符之间的任何匹配项 数据结构如下 Primary Key CustomerID1 CustomerID2 CustomerID3 1 Al
  • 如何判断 HTML5 音频元素是否正在使用 Javascript 播放

    我有一个audio网页中的元素 我想确保用户在离开页面时不会仍在播放它 我怎样才能确定audio页面卸载时元素未播放 到目前为止 我有以下代码 但它似乎不起作用 卸载报告时弹出的对话框playing is false即使音频正在播放
  • 使用 ProgressDialog 直到从 Web 服务加载 GridView

    我正在从 Web 服务获取 GridView 的图像和文本 因此需要一些时间才能显示 GridView 我想显示一个 ProgressDialog 直到网格完全加载 到目前为止我所做的如下 public class PCGridMain e
  • 语音转文本 在 apk 中包含语音引擎

    我的应用程序中需要为真正的非极客提供语音转文本功能 有没有办法在编译时为各种平板电脑包含语音引擎 您可以包含自己的引擎 例如 CMU Sphinx 引擎 这还具有无需数据连接即可工作的优点 看到这个post http cmusphinx s
  • IPython笔记本交互函数:如何保存更新后的函数参数

    我在 Ipython 笔记本中编写了下面的代码 生成一个由参数 a 控制的 sigmoid 函数 a 定义了 sigmoid 中心的位置 b 定义了其宽度 matplotlib inline import numpy as np impor
  • 如何使用 GAS 的内置电子表格函数

    我刚刚开始使用 GAS 进行电子表格编程 但找不到我的小问题的答案 我想获得电子表格中某一列中的最大数字 打开电子表格并获取范围不是问题 但我不知道如何使用内置电子表格函数 如 MAX var ss openSpreadsheetByNam
  • 使用现有自动补全的 ZSH 自动补全功能

    我有一个函数mycmd启动我编写的程序 该程序需要第一个参数是foo ssh or ls 第二个参数取决于第一个参数 如下所示 foo gt 没有第二个参数 ssh gt ssh 到的东西 ls gt 一个文件 我想编写 zsh 自动完成功
  • OpenLayers:如何检测地图视图是否已完全加载?

    我正在使用 OpenLayers 3 实现地图导出功能 但有一个问题 无法确定地图视图是否已完全加载或还缺少一些图块 好像没有这样的API或事件 最接近的是tileloadstart tileloadend 对 但是 OpenLayers
  • [] 与 F# 中的其他常量有何不同

    我对 Literal 关键字以及为什么它在 F 中是必要的感到有点困惑 阅读文档 我觉得