0

ruby on railsの勉強を始めたばかりです。現在、チュートリアルを行っていますが、同僚の 1 人が行ったコードも理解しようとしています。私はインターネットで答えを探しましたが、私の質問に答えている答えは見つかりませんでした. だからここに私の質問があります:

このコードで:

class Post
  require 'date'
  include Comparable
  attr_accessor :post_number, :author, :date

  def initialize

  end

  def <=> (another_post)
    self.date <=> another_post.date
  end
end

メソッド「<=>」とはどういう意味ですか? :post_number, :author のコピーと :date の変更ですか? どうもこの方法はうまくいっていないようですが、この方法の意味が気になるところです。

2 番目の質問: 次のコードを見つけました: a、b、c には適切な値があります。

a = 0.1 * b if c?

これは :

if c?
  a = 0.1 * b
end

回答ありがとうございます。私の質問がばかげていないことを願っています。よろしく、 ブドルル

4

2 に答える 2

1

<=>コンパレーター方式です。のようなことをした場合Post.all.sortsortメソッドはPost投稿オブジェクトを比較する方法を定義しているかどうかを確認します。それ以外の場合は、ソートする方法が見つかるまで継承階層を上に移動します。

<=>奇妙に見えますが、これは (一方のオブジェクトが他方のオブジェクトよりも小さい)、(2 つのオブジェクトが等しい)、および (一方のオブジェクトが他方よりも大きい) の組み合わせにすぎ<ませ=>

したがって、投稿されたコードでは、作成者は 2 つのオブジェクトを比較する方法を定義するメソッドを作成しています。.date特に、それらが比較される方法は、属性が比較される方法に基づいていると彼は書いています. つまり、2013 年 1 月 1 日に開始する投稿は、2013 年 1 月 2 日に開始する投稿の前に表示されます。

次の部分に関しては、2 つのコードは同一です。Ruby では、1 行に多くの条件を記述できます。さらに例を挙げると、これらはすべて同等です。

# 1.
a = 1 unless a == 0
# or
unless a == 0
  a = 1
end

# 2.
a += 1 while a < 10
# or
while a < 10
  a += 1
end
于 2013-01-10T15:05:50.970 に答える
-1

<=>比較演算子です。Ruby <=> (宇宙船) 演算子とはを参照してください。

ifステートメントは同等です。

于 2013-01-10T15:06:03.230 に答える