回到基础 - 实例化类

时间:2015-05-24 15:59:32

标签: ruby

尝试更好地理解实例化。我为自己创造了一个问题,我希望这是有道理的。

有两个文件:test.rblength.rb

test.rb中,我想创建一个框,并指定它的长度,然后使用“puts”打印出它的长度。

length.rb是创建实例变量长度的地方。我想在那里存储数据。我不确定我对它的理解是否正确,但这就是我从后端课程中收集的内容......

以下是代码。非常感谢提前。

编辑:抱歉,问题是,如何获取最后一个代码?

puts“矩形的长度是---无论我输入函数/方法的长度”

# test.rb

require "./length.rb"

    def createLength
        puts "What is the length of the box?"
        length = gets.strip

        BoxLength.new( length )
    end

    box_one = createLength

    puts "the length of box_one is #{box_one.length}"


# length.rb

require "./test.rb"

    class BoxLength

        attr_accessor :length

        def initialize( length )
            @length = length
        end

    end

1 个答案:

答案 0 :(得分:0)

当你提出问题时,你需要发布3件事:

  1. 您的代码(或一个演示实际代码中的问题的小程序)。

  2. 预期输出。

  3. 实际输出。

  4. 1-2-3。住它,喜欢它。学习它。

    不需要require ./test.rb行 - 在文件length.rb中,您没有在test.rb中使用任何代码。

      

    我想存储数据[在length.rb]。

    您没有在length.rb中存储任何数据。 length.rb包含类的定义。在test.rb中,您要导入该类定义,然后在test.rb中创建该类的实例,然后使用值初始化其一个实例变量。 test.rb完成执行后,您的实例将与数据一起销毁。

      

    我想在那里存储数据。我不确定我对它的理解   是的,但这是我从 后端课程中收集的

    后端 表示某种类型的数据库,以及一个用作数据库的简单文件。您可以将值写入文件,然后稍后检索值:

    square_box.rb:

    class SquareBox
      attr_accessor :side
    
      def initialize(side)
        @side = side
      end
    
      def area
        side ** 3
      end
    
    end
    

    test.rb:

    require './square_box'
    
    File.open('mydata.txt', 'w') do |f|
      f.puts('5')
    end
    
    def create_box
      side = nil
    
      File.open('mydata.txt') do |f|
        side = f.gets.to_i
      end
    
      SquareBox.new(side) 
    end
    
    my_box = create_box
    puts "The side of my_box is: #{my_box.side}"
    puts "The area of my_box is: #{my_box.area}"
    
    --output:--
    The side of my_box is: 5
    The area of my_box is: 125
    

    或者:

    square_box.rb:

    class SquareBox
      attr_accessor :side
    
      def initialize(side)
        @side = side
    
        File.open('mydata.txt', 'a') do |f|
          f.puts side
        end
      end
    
      def area
        side ** 3
      end
    
    end
    

    test.rb:

    require './square_box'
    
    def get_side
      print "What is a side for your square box? "
      gets.to_i
    end
    
    my_box = SquareBox.new(get_side)
    
    puts "The side of my_box is: #{my_box.side}"
    puts "The area of my_box is: #{my_box.area}"
    
    another_box = SquareBox.new(get_side)
    
    def print_report
      puts "The SquareBoxes created so far have sides of length:"
    
      IO.foreach('mydata.txt') do |line|
        puts "\t#{line}"
      end
    end
    
    print_report
    
    --output:--
    ~/ruby_programs$ ruby test.rb 
    What is a side for your square box? 10
    The side of my_box is: 10
    The area of my_box is: 1000
    What is a side for your square box? 5
    The SquareBoxes created so far have sides of length:
        10
        5
    

    最后,ruby缩进是2个空格 - 不是4个空格,不是5个空格,不是1个空格。两个空格。