gpt4 book ai didi

c# - Java/C#类型系统有哪些不足?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:43:15 25 4
gpt4 key购买 nike

经常听说 Haskell(我不知道)有一个非常有趣的类型系统。我对 Java 非常熟悉,对 C# 也有一点了解,但有时我会与类型系统作斗争,所以一些设计适应或以某种方式更好地工作。

这让我想知道......

Java/C#类型系统的不足会导致哪些问题?你如何处理它们?

最佳答案

数组被破坏了。

  Object[] foo = new String[1];
foo[0] = new Integer(4);

给你 java.lang.ArrayStoreException

谨慎对待它们。

可空性是另一个大问题。 NullPointerExceptions 无处不在。除了切换语言或使用尽可能避免它们的约定(正确初始化字段等)之外,您真的无法对它们做任何事情。

更一般地说,Java/C# 的类型系统不是很有表现力。 Haskell 能给你的最重要的事情是,通过它的类型,你可以强制函数没有副作用。编译时证明部分程序只是被评估的表达式,这使得程序更加可靠、可组合且更易于推理。 (忽略这个事实,Haskell 的实现为您提供了绕过它的方法)。

将其与 Java 进行比较,在 Java 中调用方法几乎可以做任何事情!

Haskell 也有模式匹配,这给了你不同的方式来创建程序;你有关于哪些功能运行的数据,通常是递归的。在模式匹配中,您破坏数据以查看它是什么类型,并根据它进行操作。例如你有一个列表,它要么是空的,要么是头和尾。如果你想计算长度,你定义一个函数说:如果列表为空,length = 0,否则 length = 1 + length(tail)。

如果您真的想了解更多信息,可以使用两个出色的在线资源:

Learn you a HaskellReal World Haskell

关于c# - Java/C#类型系统有哪些不足?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/884391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com