2016-08-12 1 views
0

Я пытаюсь создать основы карточной игры. При создании/тестировании моей начальной колоды я продолжаю получать следующее сообщение об ошибке, когда запускаю свой код ruby.Ошибка синтаксиса Ruby, неожиданный конец ввода, ожидающий keyword_end

gofish.rb:30: syntax error, unexpected '\n', expecting :: or '[' or '.' 
gofish.rb:73: syntax error, unexpected end-of-input, expecting keyword_end 
deck.add_cards 

Я посмотрел возможные решения, и я не могу найти мой отсутствующий конец. Может быть, это может быть что-то еще? Я очень новичок в рубине.

class Deck 

    def initialize 
     @ranks = %w(2 3 4 5 6 7 8 9 10 Jack Queen King Ace) 
     @suits = %w(Clubs Spades Hearts Diamonds) 
     @cards = [] 

     @ranks.each do |rank| 
      @suits.each do |suit| 
       @cards << Card.new(rank, suit) 
      end 
     end 
    end 

    def shuffle 
     @cards.shuffle 
    end 

    def deal 
     @cards.shift 
    end 

    def empty? 
     @cards.empty? 
    end 

    def add_cards(*cards) 
     *cards.each do |card| 
      @cards << card 
     end #line 30 
    end 

    def to_s 
     output = "" 

     @cards.each do |card| 
      output = output + card.to_s + "\n" 
     end 

     return output 
    end 
end 

class Hand 

    def initialize 
    end 

    def search() 
    end 
end 

class Card 

    attr_reader :rank, :suit 

    def initialize(rank, suit) 
     @rank = rank 
     @suit = suit 
    end 

    def to_s 
     "#{@rank} of #{@suit}" 
    end 
end 

deck = Deck.new 

puts deck.to_s 
deck.shuffle 
puts deck.to_s 
deck.deal 
deck.add_cards #line 73 
+0

Вы ожидаете _us подсчитать число строк до 30 и 73_? – mudasobwa

+3

'* cards.each do | card |' ⇒ 'cards.each do | card |' – mudasobwa

+1

@mudasobwa Отредактировано для включения номеров ключевых строк. Спасибо за решение! –

ответ

1

Вы не должны использовать оператор пейнтбольный внутри метода, просто держать его в качестве аргументов:

def add_cards(*cards) 
    cards.each do |card| 
     @cards << card 
    end 
end