2009-05-21 79 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是非常弱的类型。