RubyãPHPã«åã¤ã«ã¯ã¡ã½ããå¼ã³åºãã®ããã®æ°ããæ¼ç®åãå¿ è¦
PHPerãRubyã触ãå§ãã¦æåã«ä¸æ©å«ã«ãªãã®ã¯ã空æååãå½ã§ã¯ãªããã¨ã ãã¤ã¾ããPHPãªããif ($var)ãã§æ¸ãã®ããRubyã ã¨ãif !var.empty?ãã¨æ¸ããªããã°ãªããªããããã§PHPerã¯ä¸æ©å«ã«ãªã (ã¾ãæ°æã¡ã¯åãã)ã
if ($var) ... # PHP if !var.empty? ... # Ruby
ããã ããªããããããå¤ãnilã§ããå¯è½æ§ããããªããRubyã§ã¯ãif var && !var.empty?ãã¨æ¸ããªããã°ãããªãããã®æç¹ã§PHPerã¯ä¸æ©å«ã©ãããããåããããªãã§ãããªã«æ¸ããªãããããªããã !? PHPãªããif ($var)ãã§æ¸ãã®ã«!! SHIIIIT!!
if ($var) ... # PHP if var && !var.empty? ... # Ruby
ããã§ãã空æååãå½ã«ãªããããªè¨èªä»æ§ããã¯ã½ã !ãã¨è¨ãåºããããããªããè¨ç·´ãããRubyistã§ãããPHPerãããåãã¦ããã®ã¯ããå¤ããããã©ããã調ã¹ããã¨ããé常ã«ãããµãããã¨ããã¡ãã¡ãvar && !var.empty?ãã®ããã«é·ã ã¨æ¸ããªãããããªãã¨ããã¹ãã¬ã¹ã«å¯¾ãã¦ã§ããã空æååãå½ãã©ããã¨ãããã¨ã«å¯¾ãã¦ã§ã¯ãªã (ãããã大åã®PHPerã¯è¨èªä»æ§ã®ç´°é¨ã«èå³ããªã)ããã®ãã¨ã«æ°ã¥ãããã空æååãå½ã«ãªãè¨èªããã¯ã½ãã¨è¨ãåºãRubyistã¯è«ç¹ãã¾ãã§åãã£ã¦ãªãã
ãã®åé¡ã«å¯¾ããDHHã¯Ruby on Railsã§ã²ã¨ã¤ã®è§£æ±ºçã示ãããObject#blank? ã§ãããããã使ãã¨ãå¤ãnilãã©ãããæ°ã«ããå¿ è¦ããªããªã£ããPHPã®ãif ($var)ãããã¯åé·ãªãã®ã®ããvar && !var.empty?ãããã¯éåãªé²æ©ã§ããã
if !var.blank? ... # Ruby on Rails if var.present? ... # æè¿ã¯ãããæ¸ããããã
ãã ã Object#blank? ããµãã¼ãããã«ã¯ãObject ã ãã§ãªã Array ã String ãªã©å¤ãã®çµã¿è¾¼ã¿ã¯ã©ã¹ã«ã¡ã½ããã追å ããªããã°ãããªãã#blank? ããµãã¼ãããããã ãã«å¤ãã®çµã¿è¾¼ã¿ã¯ã©ã¹ã«å¤æ´ãå ããã®ã¯ã¡ãã£ã¨å¤§ããã ããActiveSupportã使ã㨠#blank? 以å¤ãå®ç¾©ããã¦ãã¾ããããªã«ããCGIã§ã¯éãã¦ä½¿ããªãã
ã¾ã Rails 2.3.2 ãã㯠Object#try() ãå°å ¥ããããããã使ãã¨ã次ã®ããã«æ¸ããã¨ãã§ãã (var ã nil ãªãä½ãããªããnil 以å¤ãªã empty? ãå¼ã³åºã)ã
if var.try(:empty?) # var ã nil 以å¤ã®ã¨ãã ã empty? ãå®è¡
ããããããActiveSupportãå¿ è¦ã ãããªã«ããåå¿è ã«ã¯ãããã«ãããããããå¤ããããã©ããã調ã¹ããã ããªã®ã«ãObject#try ã¿ãããªããªããã¼ãªã®ãå¿ è¦ã«ãªãæç¹ã§ä½ããééã£ã¦ããã
ãã£ã¨ç°¡åãªæ¹æ³ãèãã¦ã¿ãã¨ãNilClass#empty? ãå®ç¾©ããæ¹æ³ãæãã¤ããããã¯å®ã«æ軽ãªæ¹æ³ã§ããå人çã«ããæ°ã«å ¥ããªã®ã ãããªããRubyã«ã¯åãå ¥ããããªã (ã¾ããnil ã空ã£ã¦ã©ãããæå³?ãã¨èããããçããããªãã®ã確ãã§ã¯ããã)ã
class NilClass def empty? true end end ## 使ãæ¹ if var.empty? ... # var ã nil ã¾ãã¯ç©ºãªã
ã¨ããããã§ãPHPã§ã¯ãif ($var)ãã§æ¸ããã¨ãããå¤ããããã©ãããã調ã¹ãã¨ãããã ããã ãã®ãã¨ãããã¾ã ã«Rubyã§ã¯é·ã ã¨ãif var && !var.empty?ãã¨æ¸ããªããã°ãããªããããã§ã¯PHPã«åã¦ãªãããããä»ã®é¨åãåã£ã¦ãã¦ãããããªåºæ¬çãªã¨ããã§è² ãã¦ãã¦ã¯ããã¤ã¾ã§ãã£ã¦ãRubyã¯PHPã®å¾å¡µãæããã¾ã¾ã ãRubyãæ¬æ°ã§PHPã«åã¨ãã¨ãããªãããããªå¼±ç¹ããã£ã¦ã¯ã ããªã®ã ãç¸æã«ä»ãå ¥ãéãä¸ãã¦ã¯ã ããªã®ã ã
ãããã©ãããã°ããããããã§ã¯ Object#blank? ã§ã NilClass#empty? ã§ããªããã¬ã·ã¼ããnilã§ãªãã¨ãã ãã¡ã½ãããå®è¡ããæ°ããæ¼ç®åãå°å ¥ãããã¨ãææ¡ããããããã¯ãã¨ãã¨ãã<%=h user.group ? user.group.name : nil %>ãã¨ãã<%=h user.group.name if user.group %>ãã¨æ¸ãã®ãé¢åã ã£ãã®ã§æãã¤ãããã¨ã§ã¯ããããä»åã®ãããªãvar && var.empty?ãã§ãããã¡ã°ãæ´»èºããã¯ãã ã
## ã->ããæ°ããæ¼ç®åã ## var ã nil ã§ãªããªã var.empty? ãå®è¡ããnil ãªã nil ãè¿ãã if var->empty?
ãã ã->ãã¯Ruby1.9ããå¥ã®ç®çã§ä½¿ããããããªã®ã§ãããã§ã¯Groovyã®ã?.ãã«å£ã£ã¦ã.?ããææ¡ãã¦ããã
## ã.?ããæ°ããæ¼ç®åã ## var ã nil ã§ãªããªã var.empty? ãå®è¡ããnil ãªã nil ãè¿ãã if var.?empty?
ããã§ãããããRubyãPHP並ã¿ã«çãæ¸ããããã«ãªã£ããå®éã«ã¯ãif ($var)ãã§æ¸ãPHPã«ã¯ã¾ã è² ãã¦ããã®ã ãããã®ããããªãåå対æã§ãããããPHPã«ä»ãå ¥ãéãä¸ãã¯ããªãã
ãã¡ãããæ°ããæ¼ç®åãå®éã«å°å ¥ãããå¯è½æ§ã¯ããªãä½ããããããRubyã¯å¤åãæããªãã¨Matz大ç¥ãå ¬è¨ãã¦ããã®ã§ãå¯è½æ§ããªãããã§ã¯ãªãããã®ããã«ã¯ãæ°ããæ¼ç®åã®å°å ¥ãçãæãå¿ è¦ããããéè¦ããªããã®ã¯å°å ¥ãããªããéè¦ããã£ã¦ãå°å ¥ãããã¨ã¯éããªãããã¾ãã¯çã声ããããªããã¨ã«ã¯å§ã¾ããªãã
ãã®ãããªèããããä»åã®ã¨ã³ããªãæ¸ãã¦ã¿ããç¾ç¶ã®Rubyã§ã¯ã¾ã PHPã«è² ãã¦ããé¨åãããããif var && !var.empty?ãã¯ãif ($var)ãããé·ãã¦é¢åãããããã®äºå®ãç´ ç´ã«èªããä¸ã§ãã¡ã½ããå¼ã³åºãã®ããã®æ°ããæ¼ç®åãå°å ¥ããããããå°éã«æ´»åãã¦ããããããã®ããã«ãããè³åããã ããæ¹ã¯ãã²ããã¯ãã¼ã¯ããé¡ããããã
ããï¼ããï¼ããï¼ããï¼
ä¸æ¹ããã·ã¢ã¯ Kernel#empty? ãå®ç¾©ããã
def empty?(val) val.nil? || val.empty? end ## 使ãæ¹ if empty?(var) ... # var ã nil ã¾ãã¯ç©ºãªã if !empty?(var) ... # var ã«å¤ããããªã