2009-05-21 25 views

回答

2

PHP/empty幾乎是相同的Ruby等效,empty?對於導軌的字符串,則blank?方法優選empty?

# this is PHP 
$bob = array();   # empty($bob) => true 
$bob = array("cat"); # empty($bob) => false 

$bob = null;  # empty($bob) => true 
$bob = "boo"  # empty($bob) => false 
$bob = "";   # empty($bob) => true 

# this is Ruby 
[].empty?   # => true 
[ "cat" ].empty? # => false 

nil.empty?   # => NoMethodError 
"boo".empty?  # => false 
"".empty?   # => true 

PHP/isset可以與對象的has_key更換?爲哈希對象。對於一般的局部變量用法,當代碼中引用變量時,Ruby實例化變量爲nil,因此唯一容易檢查的是它們是否爲零?

編輯

您也可以使用關鍵字defined?複製的isset PHP的使用局部變量。

#PHP 

isset($bob);  # => false 
$bob = "foo"; 
isset($bob);  # => true 

$bob = array(); 
isset($bob['cat']); # => false 

$bob = array('cat' => 'bag'); 
isset($bob['cat']); # => true 
isset($bob['dog']); # => false 

#Ruby 
bob     # => nil 
defined?(bob)  # => false 
bob.nil?    # => true 
bob = "foo" 
bob     # => "foo" 
bob.nil?    # => "false" 
bob = {} 
bob.has_key? :cat # => false 
bob = { :cat => 'bag' } 
bob.has_key? :cat # => true 

有一點要小心:在PHP中,一個空字符串或數字0將評估爲false在if聲明。在Ruby中,只有nilfalse在if語句中計算爲false。這需要增加兩個更多的布爾查詢方法,blank?zero?。這些方法作爲Rails應用程序的一部分混合到String類中。它們的獨立版本可以在Facets上找到。

-1

這是一個非常複雜的問題。 Ruby和PHP之間的一個主要區別是Ruby(大部分)是strongly typed,而PHP是非常弱的類型。