0

私は現在使用していcapitalize!ます:

user_input.capitalize!

ただし、入力が大文字の場合は nil を返します。

なしでメソッドを使用できることはわかって!いますが、オブジェクトのコピーを作成し、オブジェクトを変更する代わりにそれを渡します。

user_input.capitalize

どのように使用でき!ますか?すべてのケースで機能しますか?

downcase私はすべてを試しましcapitalizeたが、場合によっては同じ問題が存在します。

すべてのエントリを大文字にする最良の方法は何ですか?

これはコンテキストです:

The user inputs "works", "Works", "WORKS", or "WoRkS"
case 1) user_input = "works"
case 2) user_input = "Works"
case 3) user_input = "WORKS"
case 4) user_input = "WoRkS"

user_input.capitalize! (case 1,3,4 = "Works"; case 2 = nil)
4

2 に答える 2

4

!メソッドは、慣例により、レシーバーを変更し、変更を加えない場合はnilを返します。これを行う最も安全な方法は、2行を使用することです。

user_name.capitalize!
user_name

または#tap

user_name.tap do |s|
  s.capitalize!
end

ただし、#tapここではやり過ぎです。

于 2013-01-02T21:31:34.687 に答える
2

入力が大文字になることだけを気にする場合は、を使用capitalize!し、気にしないでくださいnil

nilコードの特定のポイントで (何らかの理由で) を使用できない場合は、使用しないでくださいcapitalize!。代わりにこれを行います:

user_input = user_input.capitalize

結局のところ、どちらの方法でも問題なく、慣用的であり、必要な状態への入力を取得します。戻り値自体nilは悪いことではありませんが、常に最終的な戻り値として使用したいわけではありません。

于 2013-01-02T21:46:10.843 に答える