これは |s| がブロック変数だからそうなるのですか?
ご認識の通りかと思います。
sort_byのソート条件として、各要素のdowncaseされた文字列を比較条件としていますが、
あくまで比較条件するための値として変換しているのみで、元の文字列に対しての変更は行われません。
下記では文字列の長さを比較条件としてソートを行っていますが、結果として文字列の長さが出力されるわけではなく、各文字列への変更はありません。
ruby
1str = "Ruby is an object oriented programming language"
2ary = str.split
3p ary.sort_by{|s| s.length }
4# => ["is", "an", "Ruby", "object", "oriented", "language", "programming"]
実際に文字列をすべて小文字にしたうえでソートを行う場合は、下記のような形とする等が考えられます。
ruby
1str = "Ruby is an object oriented programming language"
2ary = str.split
3p ary.map{|s| s.downcase}.sort
4# => ["an", "is", "language", "object", "oriented", "programming", "ruby"]
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/10/25 17:09
2017/10/25 22:17