从 Crystal 中的数组中删除空值的类型安全方法

Type-safe way to remove nulls from Array in Crystal

是否有一种首选且类型安全的方法,无需强制类型转换即可从数组中删除 nils?

[1, nil].select{|x| !!x}
// => Array(Int32 | Nil)

有点像特别的东西 select?

P.S.

我遇到这个问题时的用例 - 我想计算 mediansort 不起作用:

[1, nil].select{|x| !!x}.sort

带零的映射 [1, nil].map{|x| x || 0} 将无法工作,因为不像 sum 对于某些操作,长度确实很重要(例如 median)。

Array#compact 将从数组中删除 nils:

[1, nil].compact # => [1] (Array(Int32))