代码之家  ›  专栏  ›  技术社区  ›  Jon Lawton Sanjay T. Sharma

Ruby的`。是否存在?`没有栏杆?

  •  4
  • Jon Lawton Sanjay T. Sharma  · 技术社区  · 7 年前

    我正在开发一个用于自动化的“无Rails”Ruby守护程序(虽然理论上它运行在Rails目录中)。出于一般目的和原则考虑,我想找到一种(最“原生”/常用的方法来使用Ruby版本的 .present? / .blank? / .empty? / .nil? 要确定数组或(哈希)值是否存在且不为空(即。, [] {} ).

    从我的 read (例如,堆栈溢出)并经过测试,所有这些函数似乎都是特定于Rails的方法,是ActiveSupport(?)的一部分。

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

    我知道有RegEx解决方案 .空白的 但是 .目前

    2 回复  |  直到 7 年前
        1
  •  6
  •   Martin    7 年前

    Active Support 破碎成小块,以便您可以装载所需的货物。对于 .blank? .present? 方法要求:

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

    As docs say .

    Object#nil? , Array#empty? Hash#empty? 已经定义,所以您不需要任何 require 使用这些。

    确保 active_support 系统中安装的gem

        2
  •  0
  •   Jaffa    7 年前

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

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

    例如。, String#empty?

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

    require 'active_support'
    

    这个 documentation 还指出您可以选择所需的核心扩展:

    require 'active_support/core_ext/object/blank'