作为一名C#开发人员,我从微软的代码分析中受益匪浅.然而,在F#中,代码分析似乎不是开发周期的一个集成部分.我花了一段时间在F#项目上启用CA,但这篇博客有所帮助.现在我已启用CA,它似乎产生"错误"警告.例如,我有一个声明的记录类型
type Account = {Number : string}
Run Code Online (Sandbox Code Playgroud)
我希望默认情况下结构相等.此博客演示了两个类型为Acccount的实例,其数量相同,应该相等.为什么代码分析会告诉我:"帐户"应该定义运算符'!=',因为它实现了IComparable?当然,如果这是一个C#类,那么我将不得不跳过所有这些箍,但在F#中,这应该是自动发生的.
我正在应用"Microsoft All Rules"规则集.这些不适用于F#,如果是,那么我应该使用哪些规则集?
尽管已经使用C#工作了几年,但在某些时候用C++完成工作仍然很困难.我完全接受智能指针的使用,但现在我面临着以下难题
我有一个结构Foo,例如
struct Foo
{
Foo(std::unique_ptr<Bar> bar) : m_myBar(std::move(bar)) {}
private:
std::unique_ptr<Bar> m_myBar;
};
Run Code Online (Sandbox Code Playgroud)
在另一个类中,我想要一个包含Foo实例的向量,但是以下行
std::vector<Foo> m_Foos;
Run Code Online (Sandbox Code Playgroud)
产生编译错误,表示删除了复制构造函数.在SO线程" 为什么我不能将unique_ptr推入向量? "中给出了解释和补救措施.但是,问题涉及一个唯一指针的向量,而我有一个包含唯一指针的结构向量.建议的解决方案是使用移动语义,但这在我的情况下如何适用?或者我应该做别的事吗?
目前,我正在尝试通过创建一个包含C#GUI层和F#业务层的应用程序来教自己一些F#.在GUI层中,用户在某些时候必须通过选择作为简单枚举的一部分的值来做出选择,例如选择以下任一项:
enum {One, Two, Three}
Run Code Online (Sandbox Code Playgroud)
我编写了一个函数来将枚举值转换为F#区分联合
type MyValues =
| One
| Two
| Three
Run Code Online (Sandbox Code Playgroud)
现在我必须翻译回来,并且已经厌倦了样板代码.有没有通用的方法将我的歧视联盟翻译成相应的枚举,反之亦然?
干杯,
在 Visual Studio Marketplace ( https://marketplace.visualstudio.com ) 中,我找到了一个扩展(版本 1),我现在在 Azure Devops构建管道中使用它。联系了小改进的作者,昨天推送了新版本的扩展。在 VS MarketPlace 中,我还看到 v2 已经可用。但是,当我进入我的构建管道时,我仍然只能选择版本 1。
我已经联系了我组织的管理员以确保安装了最新版本。我们甚至尝试删除组织的扩展(此时已反映在我的构建定义中)并重新安装它,但我仍然只能选择版本 1。
为什么我无法访问最新版本的扩展程序?