簡體   English   中英

Ruby的`.present?`沒有Rails嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM