質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

1回答

868閲覧

ruby 見慣れないコードがあるのですが、どういう処理が行われているのですか?

setsu_tenhou

総合スコア33

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2017/12/28 11:44

演算子の再定義に関する記事で以下のようなコードを目にしました。
NUMBER_REGEXPに代入されている/^\d+$/とは何ですか?
それと
if number?の?はどういった意味があるのでしょうか?

###参照記事
https://qiita.com/tbpgr/items/a4390e91c4d6afb7e878

ruby

1puts "hoge" + "hage" # => hogehage 2puts "1" + "2" # => 12 3 4class String 5 NUMBER_REGEXP = /^\d+$/ 6 7 def +(other) 8 # 数値同士の場合のみ数値演算として加算 9 if number?(self) && number?(other) 10 self.to_i + other.to_i 11 # 数値同士の場合以外は文字列演算として結合 12 else 13 "#{self}#{other}" 14 end 15 end 16 17 private 18 19 def number?(value) 20 value =~ NUMBER_REGEXP 21 end 22end 23 24puts "hoge" + "hage" # => hogehage 25puts "1" + "2" # => 3

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

/^\d+$/のように/で囲まれた物は正規表現のリテラルです。
正規表現とは何か、リテラルとは何か、についてはRuby入門書を読み返して下さい。
リファレンスマニュアルだと、リテラルについては下記に説明があります。
https://docs.ruby-lang.org/ja/2.4.0/doc/spec=2fliteral.html

メソッド名の?には文法的な意味は特段ありません。number?numberが「数字」を意味するのと同じレベルで、?は「疑問符」です。

太郎「Jiro?」
次郎「Yes」

の片言英会話に於ける?と同じような意味です。
つまり、number?は「(引数が)数字ですか?」というような意味です。

投稿2017/12/28 12:14

otn

総合スコア84499

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

setsu_tenhou

2017/12/28 14:35

回答どうもありがとうございます。 助かりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問