Ruby技術者認定試験のサンプル問題を解いていく ~silver編~③

githubにあるRuby技術者認定試験のサンプル問題を解説していこうと思います!

問題はこちらにありますので是非解いてみてくださいね!

解説はRuby 2.7.0 リファレンスマニュアルに準拠しています。

第三問

問題3. 以下のコードを実行した出力として正しいものを1つ選択してください。


        puts({"members" => 193, "year" => 2014}.size)
    
  • A.15
  • B.6
  • C.4
  • D.2

正解はDですね。

ハッシュクラスのsizeメソッドは指定されたハッシュの要素数を返します。

書籍でRubyを勉強してみましょう!

 

 

 

ゼロからわかる Ruby 超入門 (かんたんIT基礎講座)

ゼロからわかる Ruby 超入門 (かんたんIT基礎講座)

 

 

lengthとsize

この問題で使用されているsizeメソッドは他のクラスのメソッドにも存在します。

同じような機能を持つメソッドにlengthメソッドがあります。

ここでは、使用頻度の高いハッシュ、配列、文字列、数値のクラスで使用できるlengthメソッド、sizeメソッドについて見ていきます。

ハッシュ

length、sizeともにハッシュ内の要素数を返します。

配列

length、sizeともに配列内の要素数を返します。

文字列

length、sizeともに文字列の長さを返します。

数値

複素数有理数のクラスにはlength、sizeメソッドが存在しません。

整数値のクラスでは、sizeメソッドで、実装上のサイズをバイト数で返します。

lengthメソッドは存在しません。

数字の桁数を取得するには以下の二つの方法があります。


    # digitsメソッドで生成された配列の長さを取得する
    puts 123456.digits
    puts 123456.digits.length
    #=> [6,5,4,3,2,1]
    #=> 6
    # 一度文字列に変換してから長さを取得する
    puts 123456.to_s
    puts 123456.to_s.length
    puts 123456.to_s.size
    #=> 123456
    #=> 6
    #=> 6

digitsメソッドは数値を位取り記数法で表記した数値を配列で返します。

digits(N)を指定するとN進数に変換し、位取り記数法で表記したものを返します。

Nを指定しない場合は10進数のまま処理を行います。

to_sメソッドは数値をそのまま文字列として扱える形式に変換します。

各オブジェクトクラスのlength、size

各オブジェクトクラスのlength、sizeメソッドの扱いについて表にしてみました。

  length size
Hash(ハッシュ、連想配列) 素数 素数
Array(配列) 素数 素数
String(文字列) 文字数 文字数
Integer(整数) なし バイト数
その他Numericのサブクラス(数値) なし なし