-3

以下のコードは、コメント コントローラーからのものです。3 行目の「oh」は何をしているのですか?

@offer = Offer.find(params[:offer_id])
@offer_comment = @offer.offer_comments.build(params[:offer_comment])
@offer_comment.commenter oh = current_user
@offer_comment.save!
Notify::offer_comment_create(@offer_comment)
@offer.update_attribute(:read, false) if @offer.read? and current_user == @offer.offerer
4

3 に答える 3

8

Ruby はその行を次のように認識します。

@offer_comment.commenter(oh = current_user)

したがって、引数として割り当てcurrent_userられohcommenter受信current_userされます。

于 2013-04-25T10:58:41.530 に答える
2

という名前の新しいローカル変数を作成しoh、その結果を割り当ててcurrent_userいます。ただし、変数は他の場所で使用されることはないため、基本的にノーオペレーションです。

于 2013-04-25T10:57:14.243 に答える
1

Ruby では括弧なしでメソッドを使用できますが、私はこのような状況のためにそれらを使用しています。Ruby は通常、優先順位規則に基づいてそれを整理して理解できますが、それでもメンテナンスとサポートの問題になる可能性があります。

特に、常に異なる言語に出入りし、それらの言語がメソッド パラメーターに異なる規則を使用している場合は、人間が読むのが難しくなります。これは、この質問に対するさまざまな回答によって証明されています。これは、ステートメントの意味を識別するのが困難だったためです。(回答の 1 つが削除されましたが、十分なランキングを持つ私たちにはまだ表示されています。)

私は長い間プログラミングをしてきました。Ruby のスタイル ガイドでは別の言い方をしていますが、私はほぼ常に括弧を使用しており、職場のチームではそれを主張しています。デバッグするとき、これらの括弧は、バグをすばやく見つけるか、見つけるのに何時間も費やすかの違いになる可能性があります。

于 2013-04-25T13:05:46.767 に答える