[英]Ruby's `.present?` without Rails?
我正在開發用於自動化的“無軌” Ruby守護進程(盡管理論上它在Rails目錄中運行)。 出於一般目的和原則,我想找到一種(大多數)“本機” /通用方式來利用.present?
的Ruby版本.present?
/ .blank?
/。 .empty?
/ .nil?
識別數組或(哈希)值是否存在並且不為空(即[]
或{}
)。
通過我的閱讀 (例如,堆棧溢出)和測試,所有這些函數似乎都是特定於Rails的方法,是ActiveSupport(?)的一部分。
來自其他Web /解釋器語言(PHP,Python,JS等),這是大多數語言(帶有數組的大多數語言)的通用邏輯功能,具有以一種或另一種方式(例如PHP的isset( ... )
)構建的功能isset( ... )
或JavaScript的.length
)。
我知道有針對.blank?
RegEx解決方法.blank?
,但是.present?
似乎需要進行異常處理才能確定其是否“存在”)。 我很難相信它不存在,但是在沒有Rails參與的情況下很少談論Ruby。
Active Support
分為幾部分,因此您可以加載所需的內容。 對於.blank?
和.present?
方法就足夠了:
require 'active_support/core_ext/object/blank.rb'
正如文檔所說 。
對象#零? , Array#empty? 和Hash#empty? 已經定義,因此您require
使用它們。
確保系統中安裝了active_support
gem
您可以在不包含所有應用程序軌的情況下使用ActiveSupport,這實際上很常見。
nil?
empty?
在標准庫中定義。
例如, String#empty?
只是測試長度是否為0。
要使用主動支持,只需安裝gem或將其添加到您的gemfile中,然后:
require 'active_support'
該文檔還指出,您可以選擇所需的核心擴展:
require 'active_support/core_ext/object/blank'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.