“base”值只能用于直接调用被重写成员的基本实现

2024-01-27

为什么我不能打电话base实施f here:

type Base = 
    abstract f : int -> int -> int
    default this.f (x : int) (y : int) : int = x + y

type Derived = 
    inherit Base
    override this.f (x : int) (y : int) : int = base.f -x -y

致电给base.f引发此编译器错误:

error FS0419: 'base' values may only be used to make direct calls to the base implementations of overridden members

如果我改变f接受一个参数然后编译。据推测,这与柯里化参数与元组参数有关,但上面的代码对我来说看起来不错。


我相信问题是base无法通过闭包捕获 - 必须直接进行调用。但是,重写柯里化函数会自动创建一个闭包,因为只有第一个参数会立即应用。因此,即使看起来您确实在使用base值来直接调用被重写成员的基本实现,您实际上正在使用base闭包内的值,这是非法的。

不幸的是,我认为没有任何好的方法可以解决这个问题。一般来说,您应该尽可能避免使用柯里化成员,但这里有一种选择:

type Base = 
    abstract f : int -> (int -> int)
    default this.f (x : int) = fun y -> x + y

type Derived = 
    inherit Base
    override this.f x = 
       let fn = base.f -x
       fun y -> fn -y
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“base”值只能用于直接调用被重写成员的基本实现 的相关文章

  • F# 正确使用序列缓存

    我正在尝试将 Seq cache 与我制作的函数一起使用 该函数返回最多为 N 的素数序列 不包括数字 1 我无法弄清楚如何将缓存的序列保留在范围内 但仍然使用它在我的定义中 let rec primesNot1 n 2 n gt Seq
  • 非虚实例方法继承是如何解决的?

    通过 C 从 CLR 引用 它读起来就像call将在运行时通过 CLR 搜索由基类型定义的方法 Then callIL指令用于调用实例或虚拟 方法中 您必须指定一个引用对象的变量 方式 变量本身的类型指示定义该方法的类型 CLR 应该调用
  • F# nameof 运算符不是一等函数

    我正在使用 F 4 7
  • 如何为带有继承的 C++ 类编写 C 包装器

    我只是想知道是否有一种方法可以为具有继承的 C 类创建 C 包装 API 考虑以下 class sampleClass1 public sampleClass public int get return this data 2 void s
  • Swift UINavigationController 子类中的强制 init 覆盖

    我目前正在子类化UINavigationController对于服务视图控制器流的框架 在某种程度上 就像UIImagePickerController do 这是我的实现示例 尽可能简单 可以在操场上运行 import UIKit pub
  • 将属性应用于返回值 - 在 F# 中

    在 C 中 可以将属性应用于方法的返回 return DynamicAttribute public object Xyz return new ExpandoObject 这在 F 中可能吗 背景 我想要一个用 F 编写的库的方法 该方法
  • 将 C# 代码转换为 F#(if 语句)

    我想知道如何转换此代码逐行从 C 到 F 我不想使用任何类型的 F 习惯用法或类似的东西 我想了解如何直接映射C 的构造到 F 这是 C 代码 requires l Length gt 0 int GetMinimumValue List
  • F# 和模糊逻辑

    我知道这可能听起来很奇怪 但我想知道 Microsoft Visual F 正在进入的这个新世界中的一件事 这种语言有很多应用 我要学习 关于解析 函数式编程 结构化编程 但是人工智能呢 模糊逻辑有什么应用吗 F 是一种适合模糊逻辑应用程序
  • 子类 B 继承自模板类 A [重复]

    这个问题在这里已经有答案了 我最近偶然发现了如下代码 但我无法理解它 template
  • 资产未考虑基本 href url - 未找到错误

    我刚刚在 Webform 项目中复制了 Angular 构建脚本 并将该项目部署到 IIS 中 注意 我只复制了脚本文件 没有单独部署在 IIS 中 我已将 Angular dist 文件夹复制到 Webform 项目的 Scripts 文
  • 从派生模板类调用函数

    我的基类 Element h class Element public Element virtual Element not sure if I need this virtual Element plus const Element v
  • 检查一个类是否是另一个类的子类

    我想在不创建实例的情况下检查一个类是否是另一个类的子类 我有一个类 它接收类名作为参数 作为验证过程的一部分 我想检查它是否属于特定的类系列 以防止安全问题等 有什么好的方法可以做到这一点吗 is subclass of http php
  • Java继承,扩展类如何影响实际类

    我正在查看 Sun 认证学习指南 其中有一段描述了最终修饰符 它说 如果程序员可以自由地扩展我们所知的 String 类文明 它可能会崩溃 他什么意思 如果可以扩展 String 类 我是否不会有一个名为 MyString 的类继承所有 S
  • 如何使用 FLinq 在 F# 中进行外连接?

    问题几乎说明了一切 我有一个如下形式的大 flinq 查询 for alias1 in table1 do for alias2 in table2 do if alias1 Id alias2 foreignId 使用这种形式 如何在这两
  • 在构造函数中调用可重写的方法,例如 Swing 的 add()

    我知道从构造函数调用可重写的方法是一个坏主意 但我也看到到处都是用 Swing 完成的 其中代码如下add new JLabel Something 一直出现在构造函数中 以 NetBeans IDE 为例 它对构造函数中的可重写调用非常挑
  • Magento:如何覆盖本地模块中的模型

    我试图在本地文件夹中覆盖本地文件夹中的模块 但我不知道是否可能 这就是我所做的 我创建了 local Mycompany Modulename Model Model php 我想覆盖 local Othercompany Modulena
  • 负整数的基数排序

    我正在尝试对整数 包括负整数 实现基数排序 对于非负整数 我计划为数字0 9创建一个10个队列的队列 并实现LSD算法 但我对负整数有点困惑 我现在的想法是继续为它们创建另一个包含 10 个队列的队列 并分别对它们进行排序 然后在最后 我将
  • 带表达式的 F# 类型定义

    是否可以这样表达 type id int gt 0 我知道它不可能静态执行 因为这意味着 F 具有依赖类型 在 C 中 我习惯于使用代码契约来执行此类操作并获得运行时强制执行 我正在这里寻找类似的东西 Thanks 编辑 感谢您提供的所有答
  • 为什么我不能在扩展 List 的类中调用 OrderBy?

    我有一堂课 Deck 其中包含一个名为的方法Shuffle 我正在致力于重构Deck延长List
  • 避免 Java 中的重复导入:继承导入?

    有没有办法 继承 导入 Example 常见枚举 public enum Constant ONE TWO THREE 使用此枚举的基类 public class Base protected void register Constant

随机推荐

  • 反应本机平面列表不滚动

    我已经使用 FlatList 很多次了 但从未有过这样的经历 我有一个视图 页面顶部有一个图像 而我的列表在下面 当我尝试滚动时 列表弹到顶部 对此找不到好的解决方案 这是我的清单
  • 在 Play Framework 中使用 POST 路由参数

    我有一个登录路由 应将其输入参数作为 POST 变量传输 我已经这样定义了我的路线 POST v1 accounts login controllers v1 Accounts login username String password
  • 标准WPF选项卡控件中是否有Selected Tab Changed事件

    在WPF中 是否有一个事件可以用来确定何时TabControl选定的选项卡发生变化吗 我尝试过使用TabControl SelectionChanged但是当孩子在选项卡中的选择发生更改时 它会被多次触发 您需要检查事件的来源以隔离最外层的
  • UISegmentedControl 委托/触摸事件

    我有一个 UISegmentedControl 有六个段 我希望它们在值更改时调用一个方法 而且当每个段获得一个UIControlEventTouchDragIn因为我希望当用户尝试选择 UILabel 上的某些内容并将手指拖过控件时 UI
  • 在哪里可以找到 IntelliJ 其他语言的词典?

    IntelliJ 拼写检查器仅捆绑了英语和阿拉伯语 奇怪 我认为它是在东欧制造的 他们甚至没有捆绑他们的语言 我的客户是德国人 所以我的所有代码都是英语 代码 德语 界面 混合的 而且我找不到 IntelliJ 的德语词典 当前的IDEA版
  • 排除字符串列表中的相似点以提取差异

    我有一个句子列表 除了书名之外 其他句子都相同 如何循环遍历列表并排除相似之处以找到书名 这是一个例子 可以是任何有相似之处的短句 蝇王 这本书堪称经典 杀死一只知更鸟 是一本经典之作 麦田里的守望者 这本书堪称经典 我遇到的问题是我不能简
  • 如何阻止 Telerik RadWindow 在下一次回发时始终重新加载

    我在网页中调用 RadWindow 作为对话框 我从代码隐藏中调用 因为我需要传递一些参数 radWindow1 NavigateUrl url 英国 德国 法国 radWindow1 VisibleOnPageLoad true 这很有效
  • ruby on Rails 的 Mahout 插件

    我想在 Ruby on Rails 项目中使用 Apache Mahout 来实现推荐和协作过滤 特别是我的要求是 建议相关标签 推荐相关文章 根据用户的喜好提示他评论文章 根据用户的地理位置和其他元信息 向他推荐类似的用户 如果任何其他解
  • 我什么时候应该明确使用@synthesize?

    据我所知 从 XCode 4 4 开始 synthesize将自动生成属性访问器 但刚才我读了一个关于的代码示例NSUndoManager 并且在代码中它注意到 synthesize被明确添加 喜欢 interface RootViewCo
  • Azure DevOps 中“bash exited with code 1”中的 Cypress 测试退出失败

    我已将 Cypress 测试设置为在 Azure DevOps 中运行 我通过 yml 文件中的 CMD 命令运行测试 然后获取测试结果 当测试通过时 一切都按预期工作 并且测试结果显示在摘要中 当测试失败时 CMD 步骤会失败 并显示错误
  • 如何使用 Powershell 下载并安装适用于 Windows 的 git 客户端

    我必须编写自动 powershell 脚本来从 gihtub 克隆存储库 但我需要使用命令行安装 git 您能否让我知道如何使用命令行在窗口上下载并安装 git 而无需执行任何手动工作 提前致谢 希望在不使用巧克力的情况下做同样的事情 以下
  • 为什么 tkinter(或海龟)似乎丢失或损坏?它不应该是标准库的一部分吗?

    当尝试使用 Tkinter 标准库包或其相关功能 使用海龟图形 时 我看到了许多不同的问题 turtle和内置的 IDLE IDE 或者使用将此作为依赖项的第三方库 例如使用 Matplotlib 显示图形窗口 似乎即使没有隐藏标准库模块名
  • 如何在 HashSet 中搜索时使用正则表达式

    我正在编写一个 Java 程序 我需要在其中搜索集合中的特定单词 必须搜索的单词类似于 wo d where 可以用任何其他字母代替 我正在使用正则表达式来匹配此类类型的单词大小写 这就是我到目前为止所拥有的 HashSet
  • 如何加速InnoDB count(*)查询?

    这里有很多类似的问题 但很多答案都说强制使用索引 这对我来说似乎并没有加快任何速度 我想在我的网站上显示一个 实时 计数器 显示表中的行数 有点像一些网站如何 实时 显示注册用户数量或其他统计数据 即使用 ajax 或 websockets
  • 将锚标记设置为看起来像提交按钮

    我有一个表单 其中有一个 提交 按钮和一个 取消 锚点 HTML 是这样的
  • AuthLogic 表单给出了不正确的验证错误 - 为什么?

    我根据 AuthLogic 示例设置了 AuthLogic for Rails http github com binarylogic authlogic example http github com binarylogic authlo
  • 适用于 Windows 和 Cygwin 的 Makefile

    我需要有一个makefile在 Windows 和 Cygwin 下工作 我在 makefile 正确检测操作系统并设置适当的变量时遇到问题 目标是为以下命令设置变量 然后使用变量调用规则中的命令 删除文件 rm在西格温 del在Windo
  • 使用 jQuery/CSS 缩小/增大动画

    如何使用 jQuery 和 或 CSS 完成放大 缩小动画 我能想到的一个例子是this https www zaarly com当您点击Join Now button 我调查了动画 css http daneden me animate
  • 将行值聚合到列中

    我有这样的数据 2013 11 localhost kern 2013 11 localhost kern 2013 11 192 168 0 59 daemon 2013 12 localhost kern 2013 12 localho
  • “base”值只能用于直接调用被重写成员的基本实现

    为什么我不能打电话base实施f here type Base abstract f int gt int gt int default this f x int y int int x y type Derived inherit Bas