问题标签 [strong-typing]

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.

0 投票
3 回答
1819 浏览

java - 寻找一种快速、紧凑、可流式传输、多语言、强类型的序列化格式

我目前在我的 Java 项目中使用 JSON(通过 gzip 压缩),其中我需要在磁盘上存储大量对象(数亿)。我每行有一个 JSON 对象,并且不允许 JSON 对象中的换行符。通过这种方式,我可以逐行从磁盘流式传输数据,而无需一次读取整个文件。

事实证明,解析 JSON 代码(使用http://www.json.org/java/)比从磁盘上提取原始数据或解压缩它(我在运行中进行)的开销更大。

理想情况下,我想要的是一种强类型的序列化格式,我可以在其中指定“此对象字段是字符串列表”(例如),并且因为系统知道会发生什么,它可以快速反序列化它。我也可以通过给别人它的“类型”来指定格式。

它还需要是跨平台的。我使用 Java,但与使用 PHP、Python 和其他语言的人一起工作。

所以,回顾一下,它应该是:

  • 强类型
  • 可流式传输(即逐位读取文件,而无需一次将其全部加载到 RAM 中)
  • 跨平台(包括Java和PHP)
  • 快速地
  • 免费(如演讲)

任何指针?

0 投票
7 回答
4381 浏览

javascript - javascript 和类似的脚本语言会从强类型中受益吗?

今天刚想通了。我在 IE 调试模式下花了一些时间,像往常一样浏览网页,哦,天哪,我看到很多错误 :) 大多数这些错误是因为某些值的类型与预期不同(至少就我解释错误而言消息)。

JavaScript 和类似的脚本语言不是强类型的原因是什么?仅仅是为了让语言“更容易”理解和更易于访问,还是缺乏“编译时”才是真正的问题?

0 投票
5 回答
3211 浏览

python - Python 强类型列表

我正在为 python 使用 eclips,我遇到了一个问题。我有许多具有许多属性的类,并且想要一个来自我声明的类的对象列表。问题是:当我访问列表中的任何项目时,IDE 不知道它的类型,因为在 python 中我们没有用它的类型声明变量,所以没有自动完成,我必须去类复制属性名称。为了使想法更清晰:

现在在 LanguageAutomata 类中的任何方法中,如果我写: cfgAutomata。然后它不会给我Name属性有什么解决方案吗?

0 投票
6 回答
7980 浏览

java - Java、C 和 C++ 中循环变量的类型限制

为什么 Java、C 和 C++(可能还有其他语言)不允许在 for 循环变量上使用一种以上的类型?例如:

在这种情况下,我们有一个循环变量 i,它是循环计数器。

但我可能想要另一个变量,其范围仅限于循环,而不是每次迭代。例如:

我将obj.operation()返回数据存储在其中,variable因为我只想在循环中使用。我不想variable被保存在内存中,也不想在循环执行后保持可见。不仅可以释放内存空间,还可以避免因错误使用variable.

因此,循环变量很有用,但由于其类型限制而没有得到广泛支持。想象一下,该operation()方法返回一个 long 值。如果发生这种情况,我将无法在不强制转换和丢失数据的情况下享受循环变量的优势。以下代码无法在 Java 中编译:

同样,有人知道为什么存在这种类型限制吗?

0 投票
2 回答
634 浏览

c++ - 接受 C/C++ 数组类型的函数

似乎 g++ 在将数组作为参数传递时忽略了数组大小的差异。即,即使使用-Wall.

现在,我了解了传递指针的底层模型,显然我可以将函数定义为getarray(int *a). 但是,我希望 gcc 在我明确指定数组大小时至少会发出警告。

有没有办法绕过这个限制?(我来宾 boost::array 是一种解决方案,但我有很多使用 c 样式数组的旧代码,这些代码被提升为 C++……)

0 投票
5 回答
8597 浏览

linq - 在 LINQ to Entities 中初始化强类型对象

我有一个普通的旧 CLR 对象,它本质上是两个实体框架对象的包装器,我这样做是为了可以将此包装器对象传递给 MVC 框架中的强类型视图。我的 foo 包装类非常简单:

到目前为止,我的 ListFoosWithBars 函数如下:

这是行不通的,因为显然 LINQ to Entities 不支持参数化初始化,所以会抛出一个异常,上面写着:“LINQ to Entities 仅支持无参数的构造函数和初始化程序。” 我想知道是否有另一种方法可以达到同样的效果?

0 投票
2 回答
106 浏览

c# - 是否可以引用属性之类的方法?像 Validate(x => x.Property)

因为我需要为 Asp.net MVC 构建一个非常强类型和类型安全的项目。但是我发现 View 页面中的很多语法都不是类型安全的变量。请看下面的例子。

代替

是否可以创建类似上述代码的内容?这是一个非常漂亮的强类型源代码。

更新!

我发现表达式树是不可能的。请看下面的代码。

仅包含 1 个操作的控制器类。公共类 Controller1 { public View Action1() { return null; } }

请看表达式代码。

结果是“Controller1:Action1”!

更新2!

以下代码是强类型开始形式的最终代码。

因此,您可以使用以下模式调用它。

谢谢,

0 投票
6 回答
3094 浏览

strong-typing - (强与弱)类型和(静态与动态)类型语言和摩尔定律

不知道有多少人面临这个问题。如果我用弱/动态类型语言(如 python、php、javascript)进行编程几天,我会失去与 c++、Java、.net 等强类型语言的联系。我最近听说了人们喜欢编程的 python 和 ruby​​ 之类的语言。

使用弱/动态类型的语言进行编程非常容易,但存在与 c++、Java 等语言失去联系的危险。处理器现在变得非常强大,根据摩尔定律,它会随着时间成倍增加速度。所以效率可能不是问题,因为当我们从嵌入式转向高级语言(如 c++、java)时会发生类似的事情。

  • 那么世界是否正在转向弱/动态类型的语言?
  • 弱/动态类型语言将来会取代强类型语言吗?
  • 是否有任何领域必须使用强类型语言并且不能在当前时间以及不久的将来替换?
0 投票
5 回答
4789 浏览

c# - 执行强类型 ASP.NET MVC 会话的更好方法

我正在开发一个 ASP.NET MVC 项目并希望使用强类型会话对象。我已经实现了以下 Controller 派生类来公开这个对象:

这允许我为每个控制器定义一个会话对象,这符合控制器隔离的概念。有没有更好/更“正确”的方式,也许是微软官方支持的方式?

0 投票
2 回答
1829 浏览

vb.net - 使用复杂对象的多个键强类型化 LINQ 查询

我不知道如何定义在我的 LINQ 分组查询中使用的对象以允许它们成为强类型。

我构建了一个使用两个复杂对象作为键的分组查询。查询有效,但我希望能够声明返回对象类型。

我有一个复杂的类型...

我在一个列表中收集并根据两个复杂的键组合在一起。

一切正常,但让我感到困扰的是,当我处理数据收集时,一切都是匿名声明的。这尤其令人烦恼,因为创建分组列表的对象位于一个程序集中,并且正在 Web 服务和网站上使用。

我真的很希望能够强输入返回的 IEnumberable,但我不知道如何声明我的IGrouping 接口

我应该能够像...一样横切我的数据结构

但到目前为止,我还没有弄清楚如何声明我的 IGrouping 类型。