-1

Rubyプログラミングを始めたばかりです。私はダウンケースとダウンケースの違いを読みました! ルビーで。ただし、実際には興味深い問題が発生します。コードは次のとおりです。

a = "lower"
a = a.downcase
print a

Compiler return: lower

ただし、試してみると:

a = "lower"
a = a.downcase!
print a

Compiler return: nil

ただし、「a = LOWER」の場合、どちらのバージョンのコードも「lower」を返します。

4

4 に答える 4

10

小文字!→ str または nil

str の内容を小文字に変換し、変更がない場合は nil を返します。注: 大文字と小文字の置換は ASCII 領域でのみ有効です。

ドキュメンテーション: String#downcase!

于 2013-06-05T11:13:56.883 に答える
6

a.小文字!"a" を直接変更します。結果を "a" に代入する必要はありません。

1.9.3p362 :003 > a = "A"
 => "A" 
1.9.3p362 :004 > a.downcase!
 => "a" 
1.9.3p362 :005 > puts a
a
 => nil 
1.9.3p362 :006 > a = "A"
 => "A" 
1.9.3p362 :007 > a.downcase
 => "a" 
1.9.3p362 :008 > puts a
A
 => nil 

variable = variable.downcase を代入する危険性! variable がすでに小文字になっている場合は、変数を nil に設定しただけです-おそらくあなたの意図ではありません。

1.9.3p362 :001 > variable = 'a'                                                                                                                                                                                                                                               
 => "a"                                                                                                                                                                                                                                                                       
1.9.3p362 :002 > variable = variable.downcase!
 => nil                                                                                                                                                                                                                                                                       
1.9.3p362 :003 > puts variable                                                                                                                                                                                                                                                

 => nil 
于 2013-06-05T11:14:57.717 に答える
1

downcase!文字列をインプレースで変更するメソッドです (downcase新しい文字列インスタンスを作成します)。

の戻り値downcase!nil、文字列が変更されていない場合、または新しく変更された文字列です。後者の場合、文字列aは上書きされます。正しい使用方法downcase!は次のとおりです。

a = "LOWER"
a.downcase! # no assignment to a here
print a # prints "lower", the original "LOWER" is lost

そしてのためにdowncase

a = "LOWER"
print a.downcase # a is still "LOWER", but "lower" gets printed

一般的な経験則として: メソッドが で終わる場合、メソッドは!値を上書きするか、変数の状態を変更します。

さらにあなたの場合:

print "lower".downcase! # prints nil, because "lower" is already written in lower case
于 2013-06-05T11:13:43.983 に答える
1

小文字!変更がない場合は nil を返します。あなたはそれをチェックすることができますri downcase!

于 2013-06-05T11:15:03.533 に答える