2016-06-01 5 views
1

を返さない:UPCASE方法は、私がテストこれらの簡単なRubyで偽得続けるupcased文字列

def large(string) 
    if string.size > 20 
    puts string.upcase! 
    else 
    puts string 
    end 
end 

テスト:それらを動作させるために必要なもの

p large("Hola vamos a la comida") == "HOLA VAMOS A LA COMIDA" 
p large("Es hora de dormir") == "Es hora de dormir" 

+0

だろうこの

def large(string) if string.size > 20 string.upcase! else string end end 

のようにそれを書く必要があります。それは初心者の質問ですが、問題の説明は理解でき、最小限の完全なコードサンプルが付属しています。これは疑問を投げかけなければならない問題行動の一種です! – Dathan

答えて

4

putsは、その引数を出力しますが、それの戻り値は常にnilです:

あなたのコードで
> val = (puts "Hello World") 
Hello World 
=> nil 
> val 
=> nil 

largeの戻り値は常にnilであるので、stringとの比較は常にfalseを返します。画面上の

def large(string) 
    if string.size > 20 
    string.upcase! 
    else 
    string 
    end 
end 
0

putsプリントやnilを返します。

これは、あなたが望むものにおそらく近いです。ブール値の文脈でRubyのnilfalsefalseです。それ以外はtrueです。したがって、あなたのメソッドlargenilを返します。あなたはより良い方法は、私はdownvoteない理由を見ない

def large(string) 
    string.size > 20 ? string.upcase : string 
end 
+0

なぜ地獄downvoteここに? – Ursus

関連する問題