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

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

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

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

Q&A

解決済

3回答

8417閲覧

【Ruby】メソッドのカッコ省略のベストプラクティス

nesheep5

総合スコア50

Ruby

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

0グッド

1クリップ

投稿2018/01/04 23:48

Ruby初心者です。
勉強を始めて、「メソッドの()は省略可能」であることを知りました。

知りたいのは、

  • なぜ省略可能なのか?(省略することでどんなメリットがあるのか、言語仕様として省略可能とした背景)
  • どんなときに省略したほうが良いのか?
  • どんなときに省略しないほうが良いのか?

あたりがよく理解できませんでした。
有識者の方のご意見を伺いたいです。よろしくお願いします。

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

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

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

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

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

guest

回答3

0

ベストアンサー

例えば、a = foo.barのようなプロパティのように見えるものも、Rubyではa = foo.bar()のようなメソッド呼び出しです。このような、「引数なしのメソッド呼び出し」の場合、カッコはほぼ確実に省略されます。

また、attr_reader :fooや、belongs_to :userのような、宣言的に使うメソッドでも、(引数をsplatするような場合を除けば)通常カッコは書きません。これらもカッコなしで書けることで、コードをスッキリ見えるようにすることができます。

逆に、foo bar a, bのように書いてしまうと、foo(bar(a), b)なのかfoo(bar(a, b))なのかわからなくなるので、こんな書き方はしません。

あと、foo(bar(x))foo bar xfoo bar(x)のような書き方はしますが、内側だけ省略するようなfoo(bar x)ということは通常行いません。

投稿2018/01/05 00:13

maisumakun

総合スコア145201

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

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

nesheep5

2018/02/07 00:09

ご回答ありがとうございます。返信遅くなりすみません。 省略はコードをスッキリ見せる事ができるため、と理解しました。 逆に省略で可読性が落ちてしまう時は明示的に()をつけようと思います。 参考になりました、ありがとうございました。
guest

0

あけまして おめでとう ございます。
Rails 初心者です。Ruby も、昔、少し書いたことがあります。
括弧を省略すると、私の場合は、見落としが増えました。そこで、括弧を書くようにしています。
括弧のネスト、改行など、特に見落としやすいと思います。

投稿2018/01/05 02:52

nekoyama7

総合スコア200

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

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

nesheep5

2018/02/07 00:02

ご回答ありがとうございます。返信遅くなりすみません。 参考になりました、ありがとうございました。
guest

0

メソッドの()

定義時の()でしょうか?
呼び出し時の()でしょうか?

rb

1# 定義時 2def f a 3 p a 4end 5 6# 呼び出し時 7f 3

以下、呼び出し時の()について

なぜ省略可能なのか?

別に必要なものでもない

どんな時に省略したほうがよいか

引数のないメソッド呼び出しについては基本付ける意味もないでしょう

どんなときに省略しないほうが良いのか?

  • 引数のあるメソッド呼び出しは付けたほうがよい場面が多いです

とくにp (1+2)*3などはp((1+2)*3)とした方が分かりやすいでしょう。

  • 呼び出しがネストするとき

p f :aなどはp(f :a)もしくは、p(f(:a))と、した方がよいでしょう

基本的に、どう解釈するか理解できなくなりそうなら付ける

投稿2018/01/05 00:20

asm

総合スコア15147

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

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

nesheep5

2018/02/07 00:07

ご回答ありがとうございます。返信遅くなりすみません。 参考になりました、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問