Ruby リファレンスマニュアルの読み方1(メソッド) の続き。返り値について詳しく見ていく。
size -> Integer の「-> Integer」って何?
size メソッドは整数を返すという意味です。
このマニュアルのヘルプ (Ruby 2.7.0 リファレンスマニュアル)
リファレンスでは、下のように メソッド名 -> 返り値の型
の形で書かれている。これは具体的にどういう意味か。
返り値の型
返り値の型には以下のようなものがある。
- bool
- Array
- object など
「bool」は真偽値
例)Integer#even?
even? -> bool
even?
は、整数オブジェクトが偶数であればtrue
、偶数でなければfalse
を返すメソッド。
irb で返り値を確認してみる。
irb(main):001:0> 10.even? => true irb(main):002:0> 5.even? => false
このように、true
か false
が返ってくるものは、-> bool
と表記される。
Integer#even? (Ruby 2.7.0 リファレンスマニュアル)
「Array」か「[クラス名]」は配列
例1)Array#shuffle
shuffle -> Array shuffle(random: Random) -> Array
shuffle
は、配列の要素をシャッフルして、シャッフル後の配列を返すメソッド。
irb で返り値を確認してみる。
irb(main):001:0> ["apple", "banana", "cherry"].shuffle => ["apple", "cherry", "banana"] irb(main):002:0> [1, 2, 3].shuffle => [3, 1, 2]
このように、配列(Array)が返ってくるものは、-> Array
と表記される。
Array#shuffle (Ruby 2.7.0 リファレンスマニュアル)
例2)String#chars
chars -> [String] chars {|cstr| block } -> self
chars
は、文字列の各文字を配列にして返すメソッド。
irb で返り値を確認してみる。
irb(main):001:0> "apple".chars => ["a", "p", "p", "l", "e"]
このように、要素が文字列(String)の配列(Array)が返ってくるものは、-> [String]
と表記される。配列[]
の中身の型が String ということ。
String#chars (Ruby 2.7.0 リファレンスマニュアル)
例3)Integer#digits
配列の中身の型が整数(Integer)であれば、-> [Integer]
という表記になる。
digits -> [Integer] digits(base) -> [Integer]
irb(main):001:0> 16.digits => [6, 1]
Integer#digits (Ruby 2.7.0 リファレンスマニュアル)
「object」は任意の型
例)Array#delete
delete(val) -> object | nil delete(val) { ... } -> object
delete
は、引数と等しい要素を配列から削除し、削除した値を返すメソッド。
irb で返り値を確認してみる。
irb(main):001:0> ["apple", "banana", "cherry"].delete("banana") => "banana" irb(main):002:0> [1, 2, 3].delete(2) => 2
削除した要素が文字列(上の例では"banana"
)だと文字列、整数(上の例では2
)だと整数オブジェクトが返ってくることがわかる。
このように、レシーバによって返り値の型が変わるものは、-> object
と表記される。
Array#delete (Ruby 2.7.0 リファレンスマニュアル)
複数の型があるとき
複数の型の値を返すときは "|" を使って記述されています。
このマニュアルのヘルプ (Ruby 2.7.0 リファレンスマニュアル)
例)Array#delete
delete(val) -> object | nil delete(val) { ... } -> object
すでに紹介したdelete
。delete(val) -> object | nil
と書いてある。|
は "or" のような意味っぽい。
delete
は引数と等しい要素を配列から削除し削除した値を返すメソッドだが、見つからなかった場合はnil
を返す。
irb(main):001:0> ["apple", "banana", "cherry"].delete("grape") => nil
その他
「-> ()」は不定
いい例が見つからなかったので見つかったら追記する。
代入式の場合は省略
ヘルプによると、代入式の場合は省略されるらしい。いい例があったら追記する。