Nasıl Ruby ve PHP bunların değerlendirilmesi motorları farklıdır?

2 Cevap php

Ben bir kez PHP ve Ruby belirli test koşulları ile eşleşti değişkenlerin farklı (: IsEmpty, isset, vb yani) nasıl idare arasındaki farklılıklar ile bir makale bulunamadı. Nasıl farklı?

2 Cevap

PHP / empty oldukça fazla Ruby eşdeğeri olarak aynı, empty? Rails dizeleri için, blank? yöntemi empty? tercih edilir

# 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 ile değiştirilebilir? Hash nesne için. Genel yerel değişken kullanımı için onlar kodunda başvurulan zaman Ruby sıfır olarak değişkenleri başlatır, böylece kontrol etmek için sadece kolay şey sıfır olsun ya da değil mi?

EDIT

Ayrıca, yerel değişkenler için isset in PHP kullanımını çoğaltmak için defined? anahtar kelime kullanabilirsiniz.

#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

Dikkatli olmak için bir şey: PHP, boş bir dize veya sayısal 0 bir if deyimi yanlış değerlendirecek. Ruby, sadece nil ve false if ifadesinde yanlış değerlendirmek. Bu iki boolean sorgulama yöntemleri eklenmesini gerektirir, blank? ve zero?. Bu yöntemler, raylar uygulamanın bir parçası olarak String sınıfı için karıştırılır. Bunlardan Solo sürümleri YÖNÜ bulunabilir.

Bu çok yaygın bir soru. Ruby ve PHP arasındaki önemli bir fark, PHP çok zayıf yazıldığında ise Yakut, (çoğunlukla) strongly typed olmasıdır.