我喜欢将枚举映射到值的开关表达式 - 虽然不是最具可扩展性的解决方案,但如果枚举代表某种模式(并且不是很大),它会快速且相当干净。
错误的一个常见来源是向枚举添加成员 - 这通常会导致新情况得不到处理。
但我认为,如果我们能够为非详尽的开关提供编译错误,从而使遗漏变得易于可见和修复,那么这些错误几乎可以被消除。(默认情况必须省略,否则就没有意义了)
这可能吗?我在想这样的事情:
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),所以我认为这并不重要。
在看到Annotatedpython 3.9 中的(很棒的)新类型注释(可变类型约束!)后,我急忙升级以便检查它们。(https://docs.python.org/3/library/typing.html?highlight=valuerange)
但是当我尝试使用ValueRange[min,max]or MaxLen[n]- 我似乎无法在任何地方找到它们.. PyCharm 没有为我提供任何帮助,而且它们似乎不在typing我期望它们的模块中。
文档以它们为特色,但谷歌搜索我在网上找不到任何关于如何实际导入它们的参考。
他们还没有语言吗?或者只是在我不知道的一些新模块中?
我在 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 …