任何编程语言中的"Excel [Blank] Cell"概念?



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中的空单元格可以是datecurrencyBoolean

最接近Excel空白单元格的是'null'在大多数编程语言中。空白单元格是状态而不是数据类型。

最新更新