问题标签 [typechecking]
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.
objective-c - Objective C 协议的使用
我有一个家庭作业问题让我很困惑,非常糟糕。下面是一个问题的简要说明。
假设您正在开发一个存储联系信息的应用程序。地址簿可能包含许多实体类型,例如人类、公司或任何其他具有联系信息的实体类型。
- 现在,与其显式检查每个对象类型,不如编写一个协议来声明对象必须如何表现并成功地出现在您的地址簿中。
我回答这个问题的理解和努力是,
构建一个协议,该协议具有
@required
标签下每种类型的联系信息的通用方法。以及@optional下的所有其他在不同联系人中不相似的方法(例如传真号码与公司相关但与人无关......)。在运行时,您可以使用 . 检查对象是否响应任何给定方法selector
。 怀疑:但是这又是间接地显式检查对象类型,对吗?abstract class
我的第二个想法是在 java中使用类似的东西。这意味着从抽象类继承的类实现了自己的抽象方法。作为一个天真的 iOS 开发人员,我怎么不知道如何实现呢?我不确定这是否能解决我的问题。如果有人知道这一点,我想得到启发。
到目前为止完成的外部阅读,如果我正在寻找的答案在这些链接之一中,请告诉我。我会再读一遍以理解和解决这个问题:)。谢谢。
haskell - 是否存在 Haskell 无法验证的类型签名?
本文确定了 System F 中的类型推断(本文中称为“可类型性”)是不可判定的。我从未听说过在其他地方提到的是该论文的第二个结果,即 F 中的“类型检查”也是不可判定的。这里的“类型检查”问题的意思是:给定一个 term t
、 typeT
和 typing environment A
,判断是否A ⊢ t : T
可推导?这个问题是不可判定的(并且它等同于可打字性的问题)令我惊讶,因为直觉上它似乎应该是一个更容易回答的问题。
但无论如何,鉴于 Haskell 是基于 System F(甚至是 F-omega),关于类型检查的结果似乎表明存在 Haskell 术语t
和类型T
,使得编译器无法确定是否t :: T
是有效的。如果是这样的话,我很好奇这样的术语和类型是什么......如果不是这样,我误解了什么?
大概理解这篇论文会导致一个建设性的答案,但我有点超出我的深度:)
c++ - 如何检查函数的模板参数是否具有某种类型?
假设我有一个模板类型为T和另外两个类A和B的函数。
如何进行这两项检查(不使用 Boost 库)?
scala - 来自 Scala 反射的类型
假设我有:
编译成类文件。后来我使用反射加载那些:
谁能告诉我如何检查是否b
是 的子类型a
?
ruby - 检查变量是否是Ruby中的字符串
还有什么比以下更惯用的吗?
list - Haskell 代码中的嵌套列表理解错误
我正在尝试在 Haskell 中编写以下列表理解,但它不会进行类型检查。我对此很陌生,无法真正弄清楚为什么。
这就是我所看到的:
注意:这段代码可能有更多错误。
这就是我真正想要学习的东西。从从 3 到 n 的所有自然数列表(这是函数的 Int 输入),我只想提取可以写为 i+j+2*i*j 的数字子集,其中 i, j 是整数并且 i<=j 和 i>=1。对于这个子集列表,我想将函数 2*x+1 应用于每个元素 x 并输出一个最终列表。
希望这是有道理的。
list - 在 ANTLR 中返回列表以进行类型检查,语言 java
我正在研究 ANLTR 以支持类型检查。我在某个时候遇到了麻烦。我将尝试用一个示例语法来解释它,假设我有以下内容:
在 ruledec_list
中,您会看到我正在返回带有 id 的 List。但是,var_dec
当我尝试将列表的第一个元素(我仅get(0)
用于查看规则的返回值dec_list
,我可以稍后对其进行迭代,这不是我的意思)放入映射时,我得到一个完整的字符串,例如
对于输入
我要做的是获取每个 ID 的文本,在这种情况下,分别在索引 0 和 1 的列表中a
。b
有谁有想法吗?
javascript - 在 Javascript 中确定对象类型的最佳实践
如果您在 javascript 中有一个对象的实例,似乎很难找到它的实际类型,即
我发现的一种解决方法是让对象成为自己的原型,然后你可以通过调用prototype.constructor.name来有效地获取它的名字,
这是一种可行的方法吗(优点/缺点是什么?)还是我错过了更好的做法?
谢谢。
java - 需要在 Java 运行时确定对象的类型。设计不好?
我正在编写粒子传输代码。在这段代码中,物理对象实现了一个接口 Volume。Volume 的一个实现者是这段代码感兴趣的案例——Particle 类。在我的设计中,Volumes 包含其他 Volumes,一直到最小的 Volume 实现者 Particle。只要粒子想要通过具有交互的体积在不受监控的情况下四处飞行,这将非常有效。
但是,当我想实现某种粒子检测器 Volume,它将记录有关粒子的信息时,我遇到了一个问题。Volume 接口不包含获取 Particle 所具有的特殊类型信息的方法。如果一个粒子进入检测器 Volume,我将不得不做一些事情,比如在将它从 Volume 投射到 Particle 并调用 Particle 方法之前用反射检查它的类型。通常(据我所见)这种类型的东西会被标记为“糟糕的设计”标签。
我可以做到只有粒子才能在音量接口中跨越音量边界(将接口与特殊情况粒子联系起来),但我真的不想对我的代码施加这个限制。我可能希望允许卷移动并稍后加入。
那么这听起来像是一个糟糕的设计吗?还有另一种明显的方法来处理这个问题吗?如果需要,我会附上代码,但一般问题似乎与我的细节无关(并且与语言完全无关)。
提前致谢。我真的很感谢这里关于 SO 的所有知识。
debugging - 为什么不进行类型检查?
compress xs@(_:_:_) = (ifte <$> ((==) <$> head <*> head.tail) <$> ((compress.).(:) <$> head <*> tail.tail) <*> ((:) <$> head <*> compress.tail) ) xs
导致类型错误,但我不明白为什么。它应该相当于
compress xs@(_:_:_) = (ifte (((==) <$> head <*> head.tail) xs) (((compress.).(:) <$> head <*> tail.tail) xs) (((:) <$> head <*> compress.tail) xs))
,这不是。
注意ifte = (\ x y z -> if x then y else z)
:<$>
和<*>
来自Control.Applicative
。
编辑:错误是:
我在尝试编写九十九个 Haskell 问题的第 8 题的无点解决方案时遇到了这个问题。我试图通过修改我写的有意义的解决方案来做到这一点,这是