"Hello", "b" => "World" } a.count %23 2 a.size %23 2 a.length %23 2 a = [ 10, 20 ] a.count %23 2 a.size %23 2 a.l" /> "Hello", "b" => "World" } a.count %23 2 a.size %23 2 a.length %23 2 a = [ 10, 20 ] a.count %23 2 a.size %23 2 a.l" />
SORU
29 Aralık 2010, ÇARŞAMBA


Ruby sayısı, büyüklüğü, uzunluğu...çok fazla seçenek?

Bu konuda kesin bir cevap bulmak için görünmüyor olabilir ve bunu anladığımdan emin olmak istiyorum "n'inci seviye" :-)


    a = { "a" => "Hello", "b" => "World" }
    a.count  # 2
    a.size   # 2
    a.length # 2

    a = [ 10, 20 ]
    a.count  # 2
    a.size   # 2
    a.length # 2

Yani hangisi kullanılır? Eğer varsa birden fazla öğe varsa bilmek istiyorum, ama gerçek farkı anladım emin olmak istiyorum bir önemi yok. Bu diziler için de geçerlidir. Aynı sonuçları elde edebilirsiniz.

Ayrıca, ActiveRecord farklı anlamları/sayısı farkındayım. Saf Yakut çoğunlukla ilgileniyorum (1.92) şu an ama eğer kimse fark AR yapar üzerine düşmek istiyorsa bu da mutluluk duyacağız.

Teşekkürler!

CEVAP
29 Aralık 2010, ÇARŞAMBA


Diziler ve karma size length bir diğer adıdır. Eş anlamlı ve aynısını yaparlar.

count çok yönlü kullanım - element ya da bir yüklem alabilir ve bu maç sadece bu öğeleri Sayın.

> [1,2,3].count{|x| x > 2 }
=> 1

Senin durumundayokbir parametre temelde uzunluğu çağıran aynı etkiye sahiptir saymak sağlar. Performans farkı olabilir.

Hemen hemen aynı şeyi yapıyorlar source code for Array dan görebilirsiniz. Burada array.length uygulanması için C kodu:

static VALUE
rb_ary_length(VALUE ary)
{
    long len = RARRAY_LEN(ary);
    return LONG2NUM(len);
}

Ve burada array.count uygulanması ile ilgili kısım:

static VALUE
rb_ary_count(int argc, VALUE *argv, VALUE ary)
{
    long n = 0;

    if (argc == 0) {
        VALUE *p, *pend;

        if (!rb_block_given_p())
            return LONG2NUM(RARRAY_LEN(ary));

        // etc..
    }
}

array.count fazladan birkaç denetler ama sonunda yaptığı aramalar aynı kod için kod: LONG2NUM(RARRAY_LEN(ary)).

Karma (source code) diğer taraftan yok gibi görünüyor uygulamak için kendi optimize edilmiş sürümü count Bu uygulama Enumerable (source code) kullanılır, hangi yineler tüm unsurları sayar ve onları tek tek.

Genel olarak ise toplam kaç tane olduğunu bilmek istiyorsanız length (veya 17* *alias) count yerine kullanmayı tavsiye ederim.


Öte yandan ActiveRecord ile ilgili olanlar varönemli farklılıklar. gelen mesaja bakın:

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DancingIsAPassion

    DancingIsAPa

    29 AĞUSTOS 2009
  • FOSDEM

    FOSDEM

    13 Ocak 2009
  • Ty Moss

    Ty Moss

    20 Kasım 2007