尝试更好地理解实例化。我为自己创造了一个问题,我希望这是有道理的。
有两个文件:test.rb
和length.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
答案 0 :(得分:0)
当你提出问题时,你需要发布3件事:
您的代码(或一个演示实际代码中的问题的小程序)。
预期输出。
实际输出。
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个空格。两个空格。