SORU
27 AĞUSTOS 2009, PERŞEMBE


Nasıl Ruby bir diziden ortalama oluşturabilirim?

Nasıl bir dizi ortalama bulmak olacaktı?

Eğer dizi varsa:

[0,4,8,2,5,0,2,6]

Ortalama bana 3.375 verecek.

Teşekkürler!

CEVAP
27 AĞUSTOS 2009, PERŞEMBE


Bunu deneyin:

arr = [5, 6, 7, 8]
arr.inject{ |sum, el| sum   el }.to_f / arr.size
=> 6.5

Tamsayı herhangi bir sorunları önlemek için isteyeceksiniz .to_f Bölüm, not. Ayrıca yapabilirsiniz:

arr = [5, 6, 7, 8]
arr.inject(0.0) { |sum, el| sum   el } / arr.size
=> 6.5

Bir diğer yorumcu olarak önerdi Array bir parçası olarak tanımlayabilirsiniz, ama tamsayı bölme kaçınmak gerekir ya da sonuçları yanlış olacaktır. Ayrıca, bu mümkün olan her eleman tipi (açıkçası, ortalama yalnızca ortalama olabilir şeyler için mantıklı) için genel olarak uygulanabilir değil. Ama eğer bu yolu gitmek istiyorsanız, bu kullanın:

class Array
  def sum
    inject(0.0) { |result, el| result   el }
  end

  def mean 
    sum / size
  end
end

Eğer önce inject görmedin bile, görünebilir kadar büyülü değil. Her öğe üzerinde dolaşır ve akümülatör değeri geçerlidir. Akümülatör sonraki öğeye sonra teslim edilir. Bu durumda, bizim akü sadece önceki tüm elemanlarının toplamı yansıtan bir sayıdır.

Düzenleme:Yorumcu Dave Ray güzel bir gelişme önerdi.

Düzenleme:Yorumcu Glenn Jackman önerisi arr.inject(: ).to_f, kullanarak neler olduğunu bilmiyorsun bile çok ama belki de biraz fazla zeki güzel. : bir semboldür; enjekte geçince yöntemi simgesi (bu durumda, eğer toplama işlemi) her öğe için adlı akümülatör değeri karşı uygulanır.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bobono1baby

    bobono1baby

    14 AĞUSTOS 2011
  • Bratayley

    Bratayley

    30 Aralık 2010
  • Gigawipf

    Gigawipf

    18 ŞUBAT 2010