2011-03-25 12 views
25

Ben ruby ​​one-line "x ise iade" var mı?

if this_flag 
    return 
end 

o yakut tek satıra yapılabilir eklemek için gereken yerlere bir ton var?

+6

Neden bunu sormadan önce test etmiyorsunuz? 'Irb'yi kullanın ve yapabildiğiniz şeyle oynayın ve Ruby ile yapabilirsiniz. :) – DJTripleThreat

+3

@DJTripleThread: "Senin için bana izin ver" diyeyim. Yukarıdaki iki kişi gibi –

+1

, lütfen aşağıda verilen cevapların mükemmel RANGE'ını not edin, bu da yakut cevabı vurgulayın (bariz cevabın açık olduğu hakkında sızlanmak yerine). Bu SO'nun gücüdür ve bu yüzden 'bariz' bir soru sorduğum için asla özür dilemem. – jpwynn

cevap

75

Yakut tek satır “return if x” var mı?

Evet:

return if x 

Ruby seviyorum :-)

+3

Ben de oraya gidiyorum ... sadece bir kısayol olacaklar! – jpwynn

6

Jörg W Mittag en iyi cevabı Bazı eklemeler:

x && return 
x and return 
if x then return end 

Aslında ilk iki formları önermiyoruz Ancak, yukarıdaki örneklerin hepsi geçerli yapımlardır. Kişisel olarak return'dan kaçınmayı tercih ederim - Ruby'deki dilbilgisi yapılarının çoğu kullanılabilir ifadelerdir.

Mutlu kodlama.

4

Ruby daima son şeyi döndürür ... Neden kodunuzu farklı şekilde yapılandırmıyorsunuz?

def returner(test)  
    "success" if test 
end 

Son olarak yaptığınız her şey geri dönecektir. Ruby'yi seviyorum.

+1

+1. Sadece açıklığa kavuşturmak için: bu durumda, 'nil' iade edilecektir. –

+1

Evet, yöntem tanımı 'nil 'değerini döndürecek. Ancak, yöntemi çağırmak farklı şeyler döndürecektir ... bağlı. 'returnner (true)' => '" başarı "' Dönen (yanlış) '=>' nil' – Ryanmt

1

Beklenen sınıf türlerini kontrol eden bir yöntem oluşturun Aşağıdaki örnek. Yöntem check_class doğru sınıfı bulur bulmaz doğru döndürür. Herhangi bir nedenden ötürü farklı sınıf türlerini genişletmeniz gerekebiliyorsa kullanışlıdır.

def check_class(x) 
    return true if is_string(x) 
    return true if is_integer(x) 
    # etc etc for possible class types 
    return false # Otherwise return false 
end 

def is_string(y) 
    y.is_a? String 
end 

def is_integer(z) 
    z.is_a? Integer 
end 


a = "string" 
puts "#{check_class(a)}" 
İlgili konular