小编Jul*_*ian的帖子

ISA(例如MIPS)和汇编语言之间的区别

ISA(例如,MIPS)和汇编语言之间有什么区别?我看到了一些似乎同义词使用的情境.

assembly mips isa

7
推荐指数
3
解决办法
6094
查看次数

为什么Python 3中的NotImplemented truthy?

这个问题的答案和讨论刺激了这个问题.以下代码段显示了问题的关键:

>>> bool(NotImplemented)
True
Run Code Online (Sandbox Code Playgroud)

我的问题如下:

  1. 为什么决定bool价值NotImplemented应该是True?它感觉是unpythonic.
  2. 我没有意识到有充分的理由吗?文档似乎只是说,"因为它是".
  3. 有没有以合理的方式使用它的例子?

推理为什么我认为它不直观(请忽略缺乏最佳实践):

>>> class A:
...     def something(self):
...         return NotImplemented
...
>>> a = A()
>>> a.something()
NotImplemented
>>> if a.something():
...     print("this is unintuitive")
...
this is unintuitive
Run Code Online (Sandbox Code Playgroud)

具有如此负面含义(缺乏实施)的东西似乎是一种奇怪的行为.

相关文字来自:

未实现

这应该由二进制特殊的方法被返回(如特殊的值__eq__(),__lt__(),__add__(),__rsub__(),等等),以指示该操作不相对于另一种类型的实施; 可通过就地二进制特殊的方法(例如被返回__imul__(),__iand__()为了相同的目的,等等).它的真实价值是真实的.

- 来自Python Docs

编辑1

为了澄清我的立场,我觉得NotImplemented能够评估一个布尔值本身就是一种反模式.我觉得Exception更有意义,但流行的想法是在评估不同对象之间的比较时,出于性能原因选择常量单例.我想我正在寻找令人信服的理由,为什么这是选择的"方式".

python boolean python-3.x truthiness

5
推荐指数
1
解决办法
185
查看次数

TypeScript 可以通过“提取的”布尔逻辑推断可区分联合的类型吗?

我更频繁地使用受歧视工会 (DU),并且越来越喜欢它们。然而,我确实有一个问题似乎无法解决。如果您内联 DU 的布尔检查,则可以依靠 TypeScript (TS) 自动推断类型。但是,如果提取布尔检查,TS 就无法再缩小到 DU 的特定子类型。我\xe2\x80\x99m知道类型保护,但我\xe2\x80\x99d想知道为什么编译器\xe2\x80\x99不支持提取的在线检查,特别是。

\n\n

这是一个已知的限制吗?我应该提交错误/功能请求吗?

\n\n

示例如下(带有TypeScript Playground Link):

\n\n
type A = { type: "A"; foo: number };\ntype B = { type: "B"; bar: string };\ntype DU = A | B;\n\nconst checkIt = (it: DU) => {\n  const extractedCheck = it.type === "A";\n\n  if (extractedCheck) {\n    // it does not get narrowed\n    console.log(it.foo); // Error: Property \'foo\' does not exist on type \'DU\'.\n  }\n\n  if (it.type === "A") {\n    // …
Run Code Online (Sandbox Code Playgroud)

discriminated-union typescript

4
推荐指数
1
解决办法
1558
查看次数