【问题标题】:How do I read data line by line in Ruby?如何在 Ruby 中逐行读取数据?
【发布时间】:2015-07-17 00:15:11
【问题描述】:

我是 Ruby 新手,正在创建一个扑克游戏应用程序。我正在尝试从文本文件中读取每个玩家的卡片。文本文件中的数据如下所示:

8C TS KC 9H 4S 7D 2S 5D 3S AC
5C AD 5D AC 9C 7C 5H 8D TD KS
3H 7H 6S KC JS QH TD JC 2D 8S

等等。每行的前 5 张是一个玩家的牌,另外 5 个是另一个玩家的牌。我将如何阅读这些数据?我已经编写了一个 Card 类,它可以根据卡片在文件中的表示方式创建卡片。

【问题讨论】:

    标签: ruby file-io io


    【解决方案1】:
    IO.foreach('cards.txt') do |line|
      cards = line.chomp.split.map { |c| Card.new(c) }
      hand1 = cards[0, 5]
      hand2 = cards[5, 5]
      #...
    end
    

    或者...

    handpairs = File.open('cards.txt') do |f|
      f.each_line.map { |line|
        line.chomp.split.each_slice(5).map { |cs|
          cs.map { |c| Card.new(c) }
        }
      }
    end
    

    【讨论】:

    • 我已经部分回答了,但你几乎把它搞定了。我唯一的不同点,你也可以line.chomp.split.map(&Card.method(:new)).each_slice(5)
    • @Kimball:不是 Python,TIMTOWTDI :)
    猜你喜欢
    • 1970-01-01
    • 2011-04-12
    • 1970-01-01
    • 2018-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-17
    • 1970-01-01
    相关资源
    最近更新 更多