2009-05-21 6 views

Antwort

2

PHP/empty so ziemlich das gleiche wie das Äquivalent Ruby ist, empty? Bei Strings in Rails, die blank? Methode empty? bevorzugt wird

# 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 mit has_key ersetzt werden? für das Hash-Objekt. Für die allgemeine Verwendung der lokalen Variablen instantiiert Ruby Variablen als Null, wenn sie im Code referenziert werden. Es ist also nur leicht zu überprüfen, ob sie null sind oder nicht.

EDIT

Sie können auch die defined? Schlüsselwort verwenden, um die PHP Nutzung von isset für lokale Variablen zu duplizieren.

#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 

Eine Sache vorsichtig sein: In PHP, eine leere Zeichenfolge oder einen numerischen 0 wird in einer if Aussage falsch bewerten. In Ruby werden nur nil und false in einer if-Anweisung als false ausgewertet. Dies erfordert das Hinzufügen von zwei weiteren booleschen Abfragemethoden, blank? und zero?. Diese Methoden werden als Teil einer Rails-Anwendung in die String-Klasse eingefügt. Freistehende Versionen von ihnen können auf Facetten gefunden werden.

-1

Das ist eine sehr diffuse Frage. Ein Hauptunterschied zwischen Ruby und PHP ist, dass Ruby (meistens) strongly typed ist, wohingegen PHP sehr schwach typisiert ist.

Verwandte Themen