4

我正在开发一个用于自动化的“无 Rails”Ruby 守护程序(尽管理论上它在 Rails 目录中运行)。出于一般目的和事情的原则,我想找到(大多数)“本机”/常用方法来利用///的Ruby版本.present?.blank?识别数组或(哈希)值是否存在且不为.empty?.nil?(即,[]{})。

从我读过的(例如,堆栈溢出)和测试来看,所有这些功能似乎都是特定于 Rails 的方法,是 ActiveSupport(?) 的一部分。

来自其他网络/解释器语言(PHP、Python、JS 等),这是一个通用逻辑函数,大多数语言(使用数组,这是大多数)都以一种或另一种方式构建此功能(例如,PHPisset( ... )或 JavaScript .length) .

我知道有 RegEx 解决方法.blank?,但.present?似乎需要异常处理来确定它是否“存在”)。我很难相信它不存在,但很少有人谈论没有 Rails 参与的 Ruby。

4

2 回答 2

6

Active Support被分成小块,这样你就可以装载你需要的东西。对于.blank?.present?方法,要求:

require 'active_support/core_ext/object/blank.rb'

正如文档所说

对象#nil?,数组#empty? 哈希#empty?已经定义了,所以你不需要任何东西require来使用它们。

确保active_support系统中安装了 gem

于 2018-04-17T12:01:50.200 回答
0

您可以使用 ActiveSupport 而不在您的应用程序中包含所有轨道,这实际上很常见。

nil?empty?在标准库中定义。

例如,String#empty?只是测试长度是否为 0。

要使用主动支持,只需安装 gem 或将其添加到您的 gemfile 中:

require 'active_support'

文档还指出您可以挑选您想要的核心扩展:

require 'active_support/core_ext/object/blank'
于 2018-04-17T12:00:28.073 回答