相关疑难解决方法(0)

没有null的语言的最佳解释

当程序员抱怨空错误/异常时,有人经常会问我们做什么而没有null.

我对选项类型的酷感有一些基本的想法,但我没有最好的表达它的知识或语言技巧.对于普通程序员可以接近的方式写的以下内容有什么好的解释,我们可以指出那个人?

  • 默认情况下,引用/指针的不可取性是可以为空的
  • 选项类型的工作原理包括简化检查空案例的策略
    • 模式匹配和
    • monadic理解
  • 替代解决方案,如消息吃零
  • (我错过了其他方面)

null programming-languages functional-programming nullpointerexception non-nullable

223
推荐指数
7
解决办法
4万
查看次数

在语言中不包含NULL的含义?

我知道在编程语言中不需要NULL,我最近决定不在我的编程语言中包含NULL.声明是通过初始化完成的,因此不可能有一个未初始化的变量.我希望这将消除NullPointerException支持更有意义的例外或者根本没有某些类型的错误.

当然,由于语言是用C实现的,因此在封面下会使用NULL.

我的问题是,除了使用NULL作为错误标志(这是用异常处理)或作为数据结构的端点,如链接列表和二叉树(这是由有区别的联合处理)是否有任何其他用例为NULL哪个我应该有解决方案?没有NULL可能会给我带来什么问题吗?

null programming-languages language-design

13
推荐指数
1
解决办法
687
查看次数

面向对象的编程语言中的引用是否应该默认为不可为空?

空指针被描述为" 十亿美元的错误 ".某些语言具有无法分配空值的引用类型.

我想知道在设计一种新的面向对象语言时是否应该使用默认行为来防止被赋值为null.然后可以使用特殊版本来覆盖此行为.例如:

MyClass notNullable = new MyClass();
notNullable = null; // Error!
// a la C#, where "T?" means "Nullable<T>"
MyClass? nullable = new MyClass();
nullable = null; // Allowed
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,有没有理由不在新的编程语言中这样做?

编辑:

我想补充一点,我博客上的最新评论指出,当在数组中使用时,非可空类型有一个特殊的问题.我还要感谢大家的有益见解.这非常有帮助,对不起,我只能选择一个答案.

language-agnostic null nullable language-design

8
推荐指数
1
解决办法
580
查看次数

Java/C#类型系统有哪些不足之处?

它经常听说Haskell(我不知道)有一个非常有趣的类型系统.我对Java非常熟悉,而且对C#有点熟悉,有时我会对类型系统进行战斗,所以有些设计适应或以某种方式更好地工作.

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

由于Java/C#类型系统的不足,以某种方式出现了什么问题?你是如何处理它们的?

c# java haskell type-systems

6
推荐指数
3
解决办法
2101
查看次数