可以设计一个正则表达式来确定函数的返回类型吗?

2023-12-02

鉴于text的以下功能:

function f3() {
  return Math.random() > 0.5 ? Promise.resolve(true): 'naaah'
}

是否可以编译正则表达式来确定返回类型f3()调用,而不实际调用该函数?


给定代码,我们无法通过正则表达式确定 this 的返回类型。矛盾证明:

  1. 假设我们可以使用正则表达式找到返回类型。

  2. 返回类型在最后一行通过非确定性调用决定random(提前不知道)。

  3. 正则表达式是确定性的——在相同的输入上运行时它们总是具有相同的输出。

  4. 因此,函数的返回类型必须是静态的,因为我们可以运行正则表达式并找到返回类型(并且该正则表达式将始终返回相同的内容)。

  5. 矛盾:函数的返回类型必须是静态的,但函数的返回类型是可变的,因为random

注意:上面假设类型必须是单一类型,并且本身不考虑联合类型。

此外,还证明了为什么我们不能总是做到这一点。

  1. 假设我们可以以某种方式找出函数中使用的每种类型。

  2. 在某个时刻,我们生成一个字符串a="A"+Math.random()

  3. 稍后,我们生成一个字符串b="class "+a+"{...}

  4. 在这个定义之后,我们执行c= eval("new "+a+"()").

  5. 当我们回来时c,没有正则表达式可以知道类型 - 类型在函数中新命名,随机确定,并且每次执行都不同。

这假设问题是一个更一般的“javascript 正则表达式能否找到通用函数的返回类型”。请注意,如果可以找到返回类型,则可以判断程序已停止(如果不停止则无法返回,如果从不停止则返回类型必须是未定义的),并且停止问题仍然没有解决。

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

可以设计一个正则表达式来确定函数的返回类型吗? 的相关文章

随机推荐

  • 查找当前文件夹的路径 - cmd

    我使用此脚本查找当前文件夹及其 bat 文件 for f i in 0 do set curpath dpi echo curpath 如果路径包含空格 它无法正常工作 D Scripts All Scripts gt 仅检索 D Scri
  • 无法播放 mp4 转换后的文件 - JavaFX 2.1

    我已经转换了我的 mov视频到 mp4 但是当我在 javafx 应用程序中播放视频时 它不起作用 我可以听到视频文件的音频 但没有图片 也许 mp4 的编解码器不正确 有什么想法或解决方案吗 UPDATE 使用相同的代码 我在相同的条件下
  • Swagger Gateway 微服务聚合

    我正在使用 SpringBoot 开发一个微服务应用程序 有面向公众的网关微服务 它将请求重定向到特定的微服务 在不同的主机上运行 现在 我有多个微服务 每个微服务都使用 Swagger 公开了它们的 API 我们希望为公共客户聚合所有这些
  • 如何从 extjs 4 商店获取数据

    我一开始就使用 ext js 4 我试图在使用 store 启动应用程序时获取当前用户数据 但我没有从商店获取任何数据 甚至 store count 返回 0 我发现很多描述如何创建存储 但没有描述如何访问其中的数据 我设法使用 Ext a
  • 以语义方式填充元组列表

    我正在编写一段代码 我必须处理元组列表 其中 键 的顺序和名称 fst元组的 s 匹配某个模板 我通过验证并 如果需要 根据输入生成有效列表来实现容错 这是我的意思的一个例子 给定密钥模板 hello world this is a tes
  • 如何在 Lotus Domino 上设置 CORS?

    我尝试通过跨域请求通过 REST 与 Domino 进行通信 但遇到了问题 我已经设置了一个 Internet 站点文档 其中包含 IP 地址 本地主机和作为主机名列出的服务器名称 该网站正在按照我在该网站上设置的重定向规则运行 我还使用以
  • 添加到 CodeBehind 的代码未执行

    我对 Umbraco 很陌生 我仍在摸索它的工作方式 所以我完全有可能错过了一些非常明显的东西 我被要求修改 MasterPage 上滑块的功能 我发现滑块的标记位于 MasterPage 的 cs 文件中 void CreateSlide
  • 检索音频 - 二进制文件 - 存储在我的 Mlab 中

    基本上 我已经使用 MediaDevices getUserMedia WebRTC API 设置了一个应用程序 我已经录制了音频 理论上一切都很好 但我现在必须检索音频来听他们的声音 我现在想知道如何在我的 MongoDB 数据库中下载音
  • “标题”视图和按钮:如何将侦听器附加到没有自己的 Activity 的“标题”中的按钮?

    我已经触及这个问题here 克里斯托弗对此给出了答案 但我不太明白 所以我认为是时候让它成为一个真正的问题 而不仅仅是 跟进 目前 我正在编写的应用程序有 4 个不同的屏幕 屏幕 1 节点列表 主屏幕 屏幕 2 选项菜单 带按钮的表格布局
  • 无法更新 Dart SDK。重试

    我正在尝试安装颤振 但是当我运行 cmd flutter doctor 时发生错误 正在检查 Dart SDK 版本 PowerShell exe 未被识别为内部或外部命令 可运行的程序或批处理文件 错误 无法更新 Dart SDK 正在重
  • 子类化 NSDrawer 的 contentView 以实现完全自定义的抽屉

    我想通过子类化 NSView 并在其中完成所有视图绘制来完全实现我自己的自定义抽屉 我创建了一个自定义 NSView 类 除了实现 initWithFrame 和 drawRect 之外几乎不做任何事情 我已经记录了 NSView 的框架
  • 在 Visual Studio 2012 中使用 EF Scaffolding 创建新的 Web API 控制器时,“对象引用未设置为对象的实例”

    我有一个 MVC4 Web API 项目 带有实体框架 Code First 数据模型 当我尝试使用数据上下文和模型创建具有读 写方法的新 API 控制器时 我收到一条警告 提示 对象引用未设置到对象的实例 我做了一些搜索 发现一些原因是
  • 导入 cx_Oracle 模块时出错 [Python]

    我使用 Windows 7 64 位和 Oracle 10g 我已经安装了 python 2 7 2 amd64 和 cx Oracle 5 1 10g win amd64 py2 7 当我导入 cx Oracle 模块时 出现此错误 回溯
  • PHP 中的 $_REQUEST

    我有这个代码 message if REQUEST msg new message New User has been added successfully else if REQUEST msg edit message User has
  • 我希望我的用户只能访问我的 php 文件,如果他们尝试访问我想要包含我的页面 404 文件的文件夹

    我有我的请求参数包括我的页面 在我的主页中 如下所示 它工作正常 我包括我的页面很好 但发生了一些问题 我找不到如何解决这个问题 我将尝试用一个例子来解释我的问题 我有一个文件夹 teachers 里面有两个pdf文档和一个页面 docum
  • 在 FCM 中单击通知时打开特定活动

    我正在开发需要显示通知的应用程序 对于通知 我正在使用 FireBase 云消息传递 FCM 当应用程序处于后台时 我能够收到通知 但是当我点击通知时 它重定向到主页 java页 我希望它重定向到通知 java page 那么 请告诉我如何
  • 最好的流量/性能/使用情况监控模块?

    是否有任何开源 或者我猜是商业 软件包可以插入您的站点以进行监控 我想要一些可以连接到我们的 ASP NET 站点并用于提供以下内容的报告的东西 随着时间的推移表现 电流负载 页面流量 SQL性能 PU时间监控 最好是用 C 加上一些性感的
  • 为什么一些包私有类没有被 Proguard 混淆?

    在 Android Studio 3 2 中处理 Android 项目 启用 Proguard 和一些特定规则后 我无法弄清楚以下内容 库模块中由客户端代码使用的特定包 及其子包 通过以下规则保留 keep public class com
  • opencv的waitKey()函数使用其他按键

    我正在开发一个程序 python opencv 其中我使用spacebar转到下一帧 并且Esc退出程序 这是我唯一能用的两把钥匙 我试图找出更多的钥匙 尝试了各种代码 但没有成功 特别是方向键 I found this about wai
  • 可以设计一个正则表达式来确定函数的返回类型吗?

    鉴于text的以下功能 function f3 return Math random gt 0 5 Promise resolve true naaah 是否可以编译正则表达式来确定返回类型f3 调用 而不实际调用该函数 给定代码 我们无法