2

次のことを試しましたが、「引数の数が間違っています(0の場合は2)」というエラーが発生しました。

class Rating
  NOOB = Rating.new(1, "U A NOOB")
  def initialize(rating, message)
    @rating = rating
    @message = message
  end
 end

Rubyで次のように書くのと同じことは何でしょうか?(これは列挙型を実行する私の方法です)

public class Rating {
  public static Rating NOOB = new Rating(1, "U SO NOOB");
  public static Rating EXPERT = new Rating(2, "U A PRO BRO");

  private int rating;
  private String message;

  public Rating(int rating, String message) {
    this.rating = rating;
    this.message = message;
  }
  ...
}
4

2 に答える 2

1

入れると効きます

NOOB = Rating.new(1, "U A NOOB")

initializeそうでなければ、インタプリタはまだそれを解釈しておらず、それが取る引数について知りません。

于 2013-02-06T14:13:43.720 に答える
0

何らかの理由で、初期化ブロックの最後に定数宣言を配置すると、次のように機能します。

class Rating
  def initialize(rating, message)
    @rating = rating
    @message = message
  end
  NOOB = new(1, "U A NOOB")
end

p Rating::NOOB
=> #<Rating:0x0000000162a9c0 @rating=1, @message="U A NOOB">
于 2013-02-06T14:12:41.297 に答える