我是 Ruby 的初学者,我正在尝试编写一个生成假数据的库。我从我的一个类中收到 NoMethodError,但我已经定义了它,但我不确定是什么原因导致的。
这是我的类(class):
EntityFaker.rb
=begin
EntityFaker.rb
=end
require_relative "EntityFactory"
class Main
public
def self.generate_entities()
puts "Generating entities..."
EntityFactory.test_function()
end
generate_entities()
end
EntityFactory.rb
=begin
Entity-Factory
=end
require 'faker'
require_relative 'Entities/Person'
class EntityFactory
@@person_array = []
public
def self.test_function()
generate_people(10)
end
private
def self.generate_people(number)
p = Person.new(age = number)
puts p.to_string()
# number.times do |n|
# p = Person.new(age = n)
# puts p.to_string()
# end
end
end
Person.rb
=begin
Person.rb
=end
class Person
def initialize(age = nil)
@@age = age
end
public
def self.to_string()
return "#{@@age}"
end
end
您可以看到我已经在 Person 类中明确定义了 to_string() 方法,但是当我运行代码时,出现以下错误:
/home/user/Documents/entity-faker/EntityFactory.rb:20:in `generate_people': undefined method `to_string' for #<Person:0x0000564f481ddbc8> (NoMethodError)
from /home/user/Documents/entity-faker/EntityFactory.rb:14:in `test_function'
from EntityFaker.rb:12:in `generate_entities'
from EntityFaker.rb:15:in `<class:Main>'
from EntityFaker.rb:7:in `<main>'
请您参考如下方法:
根据共享的源代码,您已将 to_string 定义为类方法,然后尝试使用该类的实例来访问它。
要将其用作类方法,请定义
def self.to_string()
return "#{@@age}"
end
Person.to_string()
要将其用作实例方法,请定义
def to_string()
return "#{@@age}"
end
Person.new.to_string()