小编Jon*_*vin的帖子

我可以强制使用非详尽的 C# 开关表达式来导致编译错误吗?

我喜欢将枚举映射到值的开关表达式 - 虽然不是最具可扩展性的解决方案,但如果枚举代表某种模式(并且不是很大),它会快速且相当干净。

错误的一个常见来源是向枚举添加成员 - 这通常会导致新情况得不到处理。

但我认为,如果我们能够为非详尽的开关提供编译错误,从而使遗漏变得易于可见和修复,那么这些错误几乎可以被消除。(默认情况必须省略,否则就没有意义了)

这可能吗?我在想这样的事情:

public string GetTargetValue()
{
    return target switch
   {
       Target.A => "foo",
       Target.B => "bar",
       // Compile error if someone added Target.C, otherwise works fine
       // no default case - it would defeat the point
   };
}
Run Code Online (Sandbox Code Playgroud)

PS:我主要在 Unity 中工作,但据我了解,较新版本的 Unity 使用 Roslyn 编译器(我不使用burst),所以我认为这并不重要。

c# roslyn-code-analysis

10
推荐指数
1
解决办法
1978
查看次数

python 3.9 中的类型注释约束(`ValueRange`/`MinLen` 等)在哪里?

在看到Annotatedpython 3.9 中的(很棒的)新类型注释(可变类型约束!)后,我急忙升级以便检查它们。(https://docs.python.org/3/library/typing.html?highlight=valuerange

但是当我尝试使用ValueRange[min,max]or MaxLen[n]- 我似乎无法在任何地方找到它们.. PyCharm 没有为我提供任何帮助,而且它们似乎不在typing我期望它们的模块中。

文档以它们为特色,但谷歌搜索我在网上找不到任何关于如何实际导入它们的参考。

他们还没有语言吗?或者只是在我不知道的一些新模块中?

python types python-3.x

7
推荐指数
1
解决办法
421
查看次数

Mingw-w64:ssh-add 一直有效,直到 git fetch (连接到代理时出错:文件描述符错误)

我在 windows/Git bash/MingW64 上,尝试自动添加 ssh 密钥以与 git 一起使用。我已按照本指南进行操作,仅更改私钥文件的路径。它似乎有效 - 打开 git bash 时我得到“成功添加身份:/c/users/...”。

ssh-add -l还显示我的密钥已正确添加,并且端口似乎已配置。

顺便说一句 - 此时与$SSH_AGENT_PID中的过程匹配ps并且$SSH_AUTH_PORT似乎有效(/tmp/ssh-cEU4wbNe3vo4/agent.927或类似)

但是当我 cd 进入我的 git 存储库并运行时,git fetch我得到:

fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
Run Code Online (Sandbox Code Playgroud)

之后,ssh-add不再起作用,打印:

Error connecting to agent: Bad file descriptor
Run Code Online (Sandbox Code Playgroud)

这很奇怪,因为此时$SSH_AUTH_PORT和 都$SSH_AGENT_PID 没有改变export,我已经尝试过它们只是为了确定。

启动新的 SSH-AGENT 并添加我的密钥可以在同一个终端会话中工作,但git fetch …

git ssh ssh-agent git-bash mingw-w64

7
推荐指数
2
解决办法
3284
查看次数