Ruby中类的剖析?

Ruby中类的剖析?,ruby,class,Ruby,Class,如果你被要求为教学目的写一个简单的课程,你会怎么做?我的想法很简洁,很有启发性。能产生物体的人。也许可以使用一些变量类型而不会变得太复杂 作为一个建议,它可以是一个Person类,每个对象有三个属性:姓名、国籍、问候语,但我不确定这是否能为最少的代码行提供最大的教学价值 我希望能从一位编写了数千个Ruby类的专家那里得到答案,他可以将自己的专业知识提炼成完美的教学类。如果只需要跟踪实例变量中的状态,你可以从向人们展示最简单的类开始: class Person < Struct.new(:n

如果你被要求为教学目的写一个简单的课程,你会怎么做?我的想法很简洁,很有启发性。能产生物体的人。也许可以使用一些变量类型而不会变得太复杂

作为一个建议,它可以是一个
Person
类,每个对象有三个属性:姓名、国籍、问候语,但我不确定这是否能为最少的代码行提供最大的教学价值


我希望能从一位编写了数千个Ruby类的专家那里得到答案,他可以将自己的专业知识提炼成完美的教学类。

如果只需要跟踪实例变量中的状态,你可以从向人们展示最简单的类开始:

class Person < Struct.new(:name, :nationality, :greeting) ; end

puts Person.new("b1_", "Somewhere", "Heydiho")
#=> #<struct Person name="b1_", nationality="Somewhere", greeting="Heydiho">

然后您可以使用
attr\u accessor
执行类似的操作,最后使用自定义setter和getter。这显示了一个很好的进展

如果只需要跟踪实例变量中的状态,您可以从向人们展示最简单的类开始:

class Person < Struct.new(:name, :nationality, :greeting) ; end

puts Person.new("b1_", "Somewhere", "Heydiho")
#=> #<struct Person name="b1_", nationality="Somewhere", greeting="Heydiho">

然后您可以使用
attr\u accessor
执行类似的操作,最后使用自定义setter和getter。这显示了一个很好的进展

请详细说明
教学性
。我所说的教学性是指它可以展示给初学者,而不是被淹没。因此,它不会有晦涩的语法或其他干扰因素,但仍然具有所有基本元素。请详细说明
教学性
。我所说的教学性是指它可以向初学者展示,而不是被淹没。因此,它没有晦涩的语法或其他干扰,但仍然具有所有基本元素。Thx。不过要小心。我知道Rubyists天生就是简约主义者,并以词义简洁为荣,但这样的代码有时并不适合用于教学。你的第二次尝试看起来很接近,但仍然需要一些方法,为了比较起见,还有另一种类型的变量。嗯,我已经教Ruby课程三年多了,人们似乎对我刚才给你看的东西没有什么问题。如果您想离开
结构
示例。在第二个例子中,没有“极端简洁”,这是大多数人定义这样一个类的方式。教授单一的代码对任何人都没有帮助。因此,添加了更多的方法,也许这对你有更多的帮助。
Struct
我认为太神秘了,但我认为你为父类添加一些语法是正确的。可能像
Human
这样的父母会起作用。嗯,人类…?为什么不创建另一个继承自
Person
的类呢?你可以做一些愚蠢的事情,比如
VIP
,然后添加
job
作为一个实例变量,这样我们就知道这个人以什么出名了。顺便说一句:所以礼节就是投票选出有用的答案,并接受那些回答了你问题的答案,如果有的话……谢谢。不过要小心。我知道Rubyists天生就是简约主义者,并以词义简洁为荣,但这样的代码有时并不适合用于教学。你的第二次尝试看起来很接近,但仍然需要一些方法,为了比较起见,还有另一种类型的变量。嗯,我已经教Ruby课程三年多了,人们似乎对我刚才给你看的东西没有什么问题。如果您想离开
结构
示例。在第二个例子中,没有“极端简洁”,这是大多数人定义这样一个类的方式。教授单一的代码对任何人都没有帮助。因此,添加了更多的方法,也许这对你有更多的帮助。
Struct
我认为太神秘了,但我认为你为父类添加一些语法是正确的。可能像
Human
这样的父母会起作用。嗯,人类…?为什么不创建另一个继承自
Person
的类呢?你可以做一些愚蠢的事情,比如
VIP
,然后添加
job
作为一个实例变量,这样我们就知道这个人以什么出名了。顺便说一句:所以礼节就是对有用的答案进行投票,并接受那些回答了你问题的答案,如果有的话。。。