- 代码实现思路:
- 定义一个
Person
类,用于存储和表示人的基本信息。
- 使用
class_eval
或module_eval
等元编程方法来动态定义方法,以解析DSL语法。
- 在DSL块中,通过定义的方法来设置
Person
实例的属性。
- 关键代码片段:
class Person
attr_accessor :name, :age, :gender
def initialize
@name = nil
@age = nil
@gender = nil
end
end
def person(&block)
person = Person.new
person.instance_eval(&block)
person
end
Person.define_method(:name) do |value|
@name = value
end
Person.define_method(:age) do |value|
@age = value
end
Person.define_method(:gender) do |value|
@gender = value
end
result = person do
name 'John'
age 30
gender'male'
end
puts "Name: #{result.name}, Age: #{result.age}, Gender: #{result.gender}"