Excel有一个空白单元格,当涉及到计算时,它有一些有趣的属性:
下面我们假设单元格A1是空白。
- 空白单元格等于另一个空白单元格:
=A1=A1
. - 空白单元格等于
''
,0
,FALSE
:=A1=""
,=A1=0
,=A1=FALSE
。 - 空白单元格将强制转换为期望的操作数类型:
=A1+A1
(0),=-A1
(0),=A1&A1
(")。
我想我找到的最接近的项目是python中的bool
函数,它涵盖了上面的前两种情况:
bool(None) == bool(None)
bool(None) == bool(0)
,bool(None) == bool('')
,bool(None) == bool(False)
但这并不包括第三种情况,即它隐式转换为期望的类型。语言中有什么内容涵盖了这一点吗?
这里有一个视频显示了一些属性:https://gyazo.com/b23989ba1fd28500aff32a6b6cb6dca5.
语言中是否存在涵盖这些内容的内容?
简短的回答:
支持语法统一的语言,如Prolog, Datalog, Answer Set Programming, ... .
这些编程语言是典型的逻辑编程语言。
下面是使用SWI-Prolog的列表演示
注意:Prolog =是统一而不是比较==。在某些情况下,如果您将变量视为命名指针,而将统一视为设置指针相等,这是有意义的,但这种类比仅在特定情况下有效,请注意。
- 空白单元格等于另一个空白单元格:=A1=A1.
?- A = B.
A = B.
现在如果A被绑定到一个值,那么B也被绑定,因为它们是统一的。
?- A = B,A=1.
A = B, B = 1.
- 空白单元格= ",0,and FALSE: =A1=", =A1=0, =A1=FALSE。
我认为这意味着空白单元格具有原始数据类型,默认值为该类型。
由于Prolog不是强类型的,因此在将值绑定到变量之前,变量没有类型,请考虑使用Duck类型的Python。即使这样,特定类型的概念也可能不是人们所期望的。
但是,当第二个语句与第三个语句
一起考虑时- 空白单元格将强制转换为期望的操作数类型:=A1+A1 (0), =-A1 (0), =A1&A1 (")。
那么Prolog变量(Excel空白单元格)在绑定时获得类型。
?- (var(B)->write('B is variable');write('B is not variable')),nl,(integer(B)->write('B is integer');write('B is not integer')),nl,A is 2,(integer(A)->write('A is integer');write('A is not integer')),nl,A=B,(integer(B)->write('B is integer');write('B is not integer')).
B is variable
B is not integer
A is integer
B is integer
B = A, A = 2.
- Excel中的空白单元格不是
data type
,但它是一个具有多个参数的对象。 - 空白单元格等于取决于空白单元格和其他值或单元格类型。
- 请记住,Excel中的空单元格可以是
date
或currency
或Boolean
最接近Excel空白单元格的是'null'在大多数编程语言中。空白单元格是状态而不是数据类型。