问题标签 [signature-files]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
f# - F# 中的签名文件和访问修饰符
我最近一直在尝试学习 F# 的面向对象方面,并且对如何限制对语言中类型/模块的访问感到好奇。
更具体地说,我想知道写这个之间的区别:
例子.fsi
例子.fs
或者这个:
他们最终不会完成完全相同的事情吗?来自 C# 背景,我更倾向于使用访问修饰符而不是签名 (FSI) 文件。它们似乎更通用(例如,可以应用于命名空间中的模块/类型),而我没有在任何情况下签名文件提供访问修饰符不提供的东西。
f# - F#签名文件错误
我试图使用 fsi 文件来允许在单独的文件中相互递归类,但我的 fsi 文件没有编译。下面是一个演示问题的简单示例。
文件程序.fs:
文件 File1.fs:
编译--sig:signature.fsi
产生:
哪个有错误就行
哪个是
f# - f#:导致 Intellisense 抱怨的签名文件?
鉴于以下代码...
... Intellisense 抱怨,并且编译器失败,如果我在其中创建一个签名文件:
错误是Error 10 Module 'MyModule' contains val myFnTrue : ('_a -> bool) when '_a :> MyModule.IMyInterface but its signature specifies val myFnTrue : (MyModule.IMyInterface -> bool) The types differ
。(报告了类似的错误myFnFalse
。)
我觉得自己像个白痴,无法弄清楚这一点。我究竟做错了什么?(支持“duh”的答案......)
f# - F# 签名文件和对应的实现文件中的通用函数定义
我正在尝试使用 F# 签名文件为轻量级数据存储模块创建抽象。这是我的签名文件代码,假设它被称为repository.fsi
这里是对应的实现,我们称之为repository.fs
在我的 Visual Studio 项目文件中,我的实现文件 (repository.fs) 上方有签名文件 (repository.fsi)。put和remove函数正在被正确解析和验证,没有错误(在实现文件中),但fetch函数在 Visual Studio 中不断给我红色波浪,并显示以下错误消息:
模块“DataStorage.Repository”包含
但它的签名指定
各自的类型参数计数不同
有人可以告诉我我做错了什么吗?我的签名文件中的 fetch 函数值是否定义错误?我只是想在我的签名文件中创建一个通用函数('a -> 'b),并让实现将一种类型作为输入并返回另一种类型作为输出。
f# - F# 拒绝构造函数的存在(可能与类型约束相关)
在下面的代码中,F sharp 说:模块 xyz 需要一个值new : (IBlah<'a> * 'b) -> test<'a, 'b>')
我尝试将确切的构造函数作为显式的 new 提供,但它似乎没有帮助,尽管 Intellisense 虽然类型相同。我希望我不知何故弄错了约束。有人可以告诉我要更改什么以便代码编译(不删除约束)吗?非常感谢。
首先是 fsi 文件:
fs 文件是:
f# - Automated F# Signature File (.fsi) Generation
I am working on a project that has a number of modules that I'd like to apply access control constraints to. I'd also like to have my project contain additional documentation on the type signatures of each function.
I know that I can accomplish both of these tasks very easily via F# signature files. However, my project is large and contains many files, and I need a convenient way of generating a signature file for each one. I have been successful in generating individual signature files via command line compilations using the --sig compiler option, but I am stuck on how to add compiler options to Visual Studio's build routine.
Is there a convenient way, either via VS compilation options, or via some command line script, for me to create an F# signature file for every *.fs file in my project directory?
Thanks.
inheritance - 如何从 fsharp 签名文件中的抽象类继承?
我正在尝试在 FSharp 中为域建模。我希望客户端代码能够体验对这些类型的干净访问。因此,其中一部分是通过创建签名文件 (.fsi),如下所述:https ://msdn.microsoft.com/en-us/library/dd233196.aspx
Microsoft 页面没有描述继承如何在 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 项目):
在“Visual.fsi”中,我有:
“继承”行不编译。那么正确的语法是什么?
我尝试了这些(也不起作用):
1)Artefact 之后的括号
2) Visual 后面的括号
有任何想法吗?
digital-signature - Apache felix 何时对 OSGI 捆绑包 .jar 文件执行签名验证?
我们在 apache felix 中有一个命令来安装 OSGi 包,即“felix:install Jar-file”。我的查询是:此命令是否还针对之前签署的签名对 jar 文件的内容进行验证(在安装之前)?或者我们在 Apache felix 中有任何特定的命令来做同样的事情。
如果上述任何命令不执行验证,那么我是否必须使用 OSGi 框架中的 jarsigner 工具提供的“jarsigner -verify jar-file”命令?如果是,那怎么办?
或者我是否必须在我自己的包代码中编写/嵌入一些代码/API 以进行验证,这些代码/API 可能会在安装后和解决任何包的依赖项之前运行?如果是,那么 OSGi 框架或某些 OSGi 容器实现提供的那些 API 是什么(比如Apache felix、Apache Ace、Equinox 等)?
或者它是否需要在 OSGi 包中设置任何配置,专门用于签名验证?
请分享你的一些观点。
谢谢