首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何继承fsharp签名文件中的抽象类?

如何继承fsharp签名文件中的抽象类?
EN

Stack Overflow用户
提问于 2015-11-14 21:06:32
回答 1查看 126关注 0票数 1

我正在尝试在FSharp中建模域。我希望客户端代码能够体验到对这些类型的干净访问。因此,其中一部分是通过创建签名文件(.fsi)来实现的,这里对此进行了描述:https://msdn.microsoft.com/en-us/library/dd233196.aspx

微软网页没有描述FSharp签名文件中继承的工作原理。我确实发现了如何在这里使用" interface“关键字来表示接口实现:https://github.com/intellifactory/websharper.ui.next/blob/master/WebSharper.UI.Next/Attr.fsi

好的。但我想更进一步,从一个抽象类继承,并在签名文件中指明。

我们的目标是多态性。在某个地方,我希望一个函数将参数"v“作为:(v :s list),其中S是一个超类型,列表可能包含它的子类型的值。

但是,从抽象类继承的fsharp签名文件中的语法是什么?

在"Artefact.fs“中,我有(是的,这是一个Websharper项目):

代码语言:javascript
运行
AI代码解释
复制
[<JavaScript; AbstractClass>]
type Artefact() =
    abstract member Visual : Doc with get

在"Visual.fsi“中,我有:

代码语言:javascript
运行
AI代码解释
复制
[<JavaScript; Sealed>]
type Visual = 
    inherit Artefact

"inherit“行不能编译。那么正确的语法是什么呢?

我尝试了这些(也不起作用):

1)人工制品后的方括号

代码语言:javascript
运行
AI代码解释
复制
[<JavaScript; Sealed>]
type Visual = 
    inherit Artefact()

2) Visual后面的方括号

代码语言:javascript
运行
AI代码解释
复制
[<JavaScript; Sealed>]
type Visual() = 
    inherit Artefact

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2015-11-14 22:10:48

这是在签名文件中从抽象类继承的正确语法:

代码语言:javascript
运行
AI代码解释
复制
[<JavaScript; Sealed>]
type Visual = 
    class
        inherit Artefact
    end

解释(在我看来)。在我在上面的问题中使用的语法中,编译器不理解类型是一个类。并不是所有的类型都可以继承,所以你有编译器的抱怨。

在我在这个答案中使用的语法中,我显式地声明该类型是一个类。我不知道这个语法,我只看过"class end",我从来没有想过你可以在这两个关键字之间添加东西。

感谢上面的回应。如果你不知道语法,自动生成一个.fsi文件。这将为您提供语法,您可以对其进行自定义和清理。有关自动生成签名文件的信息,请参阅本文:Automated F# Signature File (.fsi) Generation

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33713388

复制
相关文章
TS中的类的继承以及抽象类
上篇文章中,我们介绍了TS中的类和修饰符,这篇我们继续了解TS中的类相关的两个东西,分别是类的继承以及抽象类
玖柒的小窝
2021/11/06
1.6K0
继承、super、this、抽象类
继承中方法的覆盖重写_应用场景 继承设计原则:对于已经投入使用的类,尽量不要进行修改。 推荐定义一个新的类,来重复利用其中共性内容,并且添加改动新内容。
全栈程序员站长
2022/06/29
4000
继承、super、this、抽象类
JavaScript实现java中的|接口|继承|抽象类|继承|多态|对象|工厂模式|重写|重载|
//定一个接口方法, var Interface = function(name,methods){ if(arguments.length != 2){ throw new Error('this instance interface constructor arguments must be 2 length!'); } this.name = name ; this.methods = [] ; for(var i = 0,len = methods.length ; i <len ;
前朝楚水
2018/04/02
1.3K0
继承、抽象类、代码块
项目经理:姓名,工号,工资) ——————————————》员工:姓名,工号,工资 程序员: 姓名,工号,工资)
小炜同学
2022/09/23
5200
【Java】抽象类&继承的综合案例
父类中的方法,被它的子类们重写,子类各自的实现都不尽相同。那么父类的方法声明和方法主
陶然同学
2023/02/27
4990
【Java】抽象类&继承的综合案例
关于Java中的对象、类、抽象类、接口、继承之间的联系
寒假学习JavaSE基础,其中的概念属实比较多,关联性也比较大,再次将相关的知识点复习一些,并理顺其中的关系。
xbhog
2021/03/20
9510
Java基础10 接口的继承与抽象类
在实施接口中,我们利用interface语法,将interface从类定义中独立出来,构成一个主体。interface为类提供了接口规范。 在继承中,我们为了提高程序的可复用性,引入的继承机制。当时的继承是基于类的。interface接口同样可以继承,以拓展原interface。 接口继承 接口继承(inheritance)与类继承很类似,就是以被继承的interface为基础,增添新增的接口方法原型。比如,我们以Cup作为原interface: interface Cup { void addWa
Vamei
2018/01/18
7500
Java基础10 接口的继承与抽象类
【Java】继承和抽象类的练习题
创建啄木鸟对象 p,年龄赋值为1,腿的个数赋值为2;调用啄木鸟对象p的eat()方法
陶然同学
2023/02/24
5760
Java之继承、抽象类、接口篇
文章主要介绍了Java中的继承、抽象类、接口的使用,以及其相关的语法特性。通过继承、抽象类、接口,可以实现代码的重用和模块化,从而提高程序的可维护性和扩展性。
CN_Simo
2017/12/26
1.2K0
Java之继承、抽象类、接口篇
Java基础10 接口的继承与抽象类
在实施接口中,我们利用interface语法,将interface从类定义中独立出来,构成一个主体。interface为类提供了接口规范。
Java团长
2018/08/03
4190
【Java_08】继承、super与this、抽象类
一、继承 1. 继承的介绍 ① 多个类中有相同的属性和行为,将这些单独抽取到一个单独的类中,然后再继承这个类即可,无需再定义这些属性和行为。 ② 继承就是子类继承父类的非私有的属性和方法。 ③ 好处 * 提高了代码的复用性 * 继承是多态的前提 2. 继承的使用 ① 格式 public class 父类 { ··· } public class 子类 extends 父类 { ··· } ② 成员变量 * 不重名没有影响,使用谁就是谁。 * 重名则 new
用户8250147
2021/02/04
4140
【Kotlin】抽象类 ( 声明 | 抽象类成员 | 抽象类继承 | 抽象方法覆盖 | 抽象方法实现 )
② 成员 : 抽象类中既可以定义正常属性和方法 , 又可以定义抽象的属性和方法 ;
韩曙亮
2023/03/27
1.2K0
java中请给出一个抽象类,可以继承实体类的例子
System.out.println("Turn steering wheel");
马克java社区
2021/03/29
7300
java中请给出一个抽象类,可以继承实体类的例子
【Java学习笔记之二十一】抽象类在Java继承中的用法小结
一、抽象类的基本概念 普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法、普通方法、static方法、常量和变量等内容。而抽象类是指在普通类的结构里面增加抽象方法的组成部分。 那么什么叫抽象方法呢?在所有的普通方法上面都会有一个“{}”,这个表示方法体,有方法体的方法一定可以被对象直接使用。而抽象方法,是指没有方法体的方法,同时抽象方法还必须使用关键字abstract做修饰。 而拥有抽象方法的类就是抽象类,抽象类要使用abstract关键字声明。 范例:定义一个抽象类 1 a
Angel_Kitty
2018/04/09
7460
less中的继承
经过上一篇 less中的层级结构 的讲解之后,本章节开展的内容为 less 中的继承,还是一样的老套路来引出 less 中的继承,先来看一段代码如下
程序员NEO
2023/09/29
2630
less中的继承
js中的继承
特点:实例可继承的属性有:实例的构造函数的属性,父类构造函数属性,父类原型的属性。(新实例不会继承父类实例的属性!) 缺点:新实例无法向父类构造函数传参
用户10562852
2023/06/04
1.2K0
js中的继承
Python中类的继承、多层继承和多继承
继承的语法为在类名后的小括号()中写入要继承的父类名,如果要继承多个类则中间用逗号分隔。
Python碎片公众号
2021/02/26
5.6K0
Python中类的继承、多层继承和多继承
Python中的继承
python3中使⽤的都是新式类. 如果基类谁都不继承. 那这个类会默认继承 object
星陨1357
2023/03/14
7720
Python中的继承
Python中的继承
面向对象程序语言的一个重要特点是继承。继承提供了在已存在类的基础上创建新类的方法。继承的子类 拥有被继承的父类的所有方法,在此基础上,子类还可以添加自己的专有方法。继承是类的强有力的特点。一些程序不用继承将会非常复杂,用了继承,写起来就会简单扼要,通俗易懂。另外,通过继承,还可以重新利用以前编写的代码,因为你可以对父类的方法进行定制,而并非一定要修改它们。有时,继承反映了问题的自然结构,这样使程序更容易理解。任何事情都有双重性。继承也有可能使程序变得难以阅读。调用一个方法时,有时很难判断它是在哪定义的。相关的代码可能分散在几个模块中。所以,有些事情利用继承的特点能够做好,不利用继承,也可能做的不错。如果问题的自然结构不倾向于用继承解决,那么就不要用,用了反而不好。
我叫什么好
2022/01/07
7710
Sass中的继承
SASS 中的继承和 LESS 中的继承一样,都是通过 并集选择器 来实现的,只不过格式不一样而已
程序员NEO
2023/09/29
2260
Sass中的继承

相似问题

如何使用继承抽象类?

411

抽象类的继承

40

继承抽象类抽象类中的模拟方法

11

抽象类的继承

14

springboot中的抽象类继承

251
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档