问题标签 [type-safety]
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.
java - 闭包意味着完全类型安全的标准?
结合闭包(FCM)和泛型,是否有可能拥有完全类型安全的标准。
我已经阅读了类型安全标准的 JPA 2.0 规范。但是还是有些欠缺的。
此外,我只是在此处使用标准作为总体提高代码类型安全性的示例。我大量使用 java 的静态类型来让我更快地编写代码。但结果我时不时地被忽略输入的代码部分咬伤。例如 HQL 查询。
c# - 为什么我不能从 long 派生?
我的函数返回一些长值,其中包含低 32 位和高 32 位中的两个值。
我认为处理返回值的最佳方法是从 long 派生我的自定义类型并提供类型扩展器,如 GetLowerValue()、GetHigherValue()。
问题是 .NET 不允许从 long 派生
如果你编译那个
你得到:
为什么要这样设计,如何克服它?
谢谢
httpcontext - HttpContext.Items 的类型安全替代方案
我正在 ASP.NET 中实现一个 HTTP 模块,以根据请求的 IP(一个 GeoIP 模块)识别地理信息,我需要将东西放在某个地方,以便处理程序或以后的模块可以检查。
除了 HttpContext.Items (它不是类型安全的)还有其他不错的选择吗?
vb.net - 使用字节文字
我正在使用以下函数来增亮颜色值(它是我的代码中的 lambda,但这不应该有所不同):
它不会编译,因为编译器将255
and解释2
为整数而不是字节,从而产生 type 的结果Integer
。不幸的是,没有字节类型的字符,所以我不能只写255B
或类似的东西。
该问题有一些明显的解决方法:
和
和
第一个只是丑陋且难以阅读,因为每个文字都需要CByte
d。第二个以整数进行计算,然后将结果转换为字节,这还可以,但不如纯字节操作那么优雅。第三种解决方法不需要CByte
s,但它的缺点很明显。
我是否错过了一些(优雅的)第四个选项,它允许我做 Byte-only-math 而不会用 CBools 弄乱我的公式?
java - Java中的泛型和排序
假设您在 Java 中编写了一个静态函数来对数组进行排序,就像Arrays.sort()
. 问题Arrays.sort()
在于它接收一个对象数组,ClassCastException
如果它的元素没有实现则抛出一个Comparable
。
所以你希望你的函数接收一个子类型的数组作为参数Comparable
。像这样的东西可以工作:
该签名的问题在于,您仍然可以传递带有整数和字符串的 Comparables 数组,这将导致RuntimeException
.
那么,如何创建一个只接收其元素实现 Comparable 并且具有所有相同类型(例如 Integer、String 等)的数组的函数?
c - 如果我转换一个函数指针,改变参数的数量会发生什么
我刚刚开始研究 C 中的函数指针。为了理解函数指针的转换是如何工作的,我编写了以下程序。它基本上创建了一个指向带有一个参数的函数的函数指针,将其转换为具有三个参数的函数指针,然后调用该函数,提供三个参数。我很好奇会发生什么:
这编译和运行没有错误或警告(Linux / x86 上的 gcc -Wall)。我的系统上的输出是:
显然,多余的论点只是默默地丢弃了。
现在我想了解这里到底发生了什么。
- 至于合法性:如果我正确理解将函数指针转换为另一种类型的答案,这只是未定义的行为。所以这个运行并产生合理结果的事实只是纯粹的运气,对吗?(或编译器编写者的好意)
- 为什么 gcc 不会警告我这一点,即使是 Wall?这是编译器无法检测到的吗?为什么?
我来自 Java,其中类型检查要严格得多,所以这种行为让我有点困惑。也许我正在经历文化冲击:-)。
c++ - 什么是类型安全以及“类型安全”的替代方案是什么?
我正在阅读有关 C++ 向量的内容,有人提到C 中memcpy
的printf
函数不是类型安全的。文章在这里:http://en.wikipedia.org/wiki/Vector_(C%2B%2B)。
问题:用简单的英语来说,什么是类型安全以及“类型安全”的替代方案是什么?
c - 不安全的转换
以下转换安全吗?
我不认为for
循环中的上述转换是安全的(我认为它取决于平台)。如果我错了,请纠正我。我很惊讶,因为即使使用-Wall -pedantic
gcc 中的选项编译代码,也没有给出任何警告。
vb.net - VB.NET 中的泛型
现在,作为一名 C# 程序员,我知道泛型很棒。但是,在涉足一些 VB.NET 时,我发现以下不会导致编译器错误:
为什么是这样?我知道您不需要在 VB.NET 中进行强制转换,但我认为这会扼杀使用泛型的主要原因 - 类型安全。
编辑:我没有严格的选项,因为这不是一个真正的编程练习,只是我在理论上看看 VB.NET。这是一个理论上的问题,因为我期望它会导致编译器错误,即使选项严格关闭,就像泛型类型的一个特性一样。
wpf - 只能采用某种类型的子元素的选择器?
我需要编写一个应该只采用某种类型的子控件的控件。从功能上讲,它的工作方式类似于 Selector,因为我可以选择/激活它的子项,但似乎我不能从 Selector 派生,因为 ItemsControl 可以采用任何类型的子项(对象)。我真的很想在这里有编译时类型安全。因此,当添加错误类型的孩子时抛出异常不是一种选择。
这个约束似乎是必要的,因为父控件需要依赖其子控件的某些属性和行为。孩子与父母之间也有一些直接的交流。
在 WPF 中通常如何处理这样的事情。