Null用来表示“未赋值”这种状态不正合适吗?比如这样使用:
string foo = null
if (should_get_from_input1)
foo = get_from_input1()
else
foo = get_from_input2()
if (foo == null) //"" is valid input
throw Exception("No valid input")
整数同样的。0表示的是一个合法值,而null表示未赋值或者非法值,两者含义不同。
我听人鼓吹过Maybe, 没用过。对Maybe非常不感冒。它不就是用函数式编程的思维强制程序员意识到他们正在处理的变量有可能为空么?写起来比nullable的变量麻烦多了。而受益仅仅是“强制意识到”,如果我处理string/int的时候始终记得它们是nullable,还需要Maybe干嘛?
比如Maybe鼓吹者给的某些用例:
Optional<Integer> option = ...
option.ifPresent(x -> System.out.println(x));
这和
Integer option = null;
...
if (option is not null)
System.out.println(option)
有啥区别?
--
FROM 114.218.92.*