空切片与空指针相同吗?

Is an empty slice the same as a null pointer?

下面的空切片是不是和空指针一样?

slice = Slice(UInt8).empty
slice.size # => 0

#emptysource code表示空指针(地址0,大小0):

  def self.empty
    new(Pointer(T).null, 0)
  end

这是 Null-Object 模式的应用:

空切片可以用在所有需要切片的地方,不需要显式的 Nil-Checks。

一个类似的例子是在 nil 上返回一个空字符串,或者拥有一个与普通用户具有相同属性的 GuestUser。