【发布时间】:2016-02-23 12:20:53
【问题描述】:
我有这个 Ruby 课程:
class Drive
attr_accessor :pitch, :ring, :sprocket, :links
def initialize pitch,ring,sprocket,links
@pitch = pitch
@ring = ring
@sprocket = sprocket
@links = links
end
def teeth2radius choice
return ((pitch * choice) / (Math::PI * 2));
end
def ring2sprocket
return ((pitch / 8) * ((2 * links - ring - sprocket) + Math.sqrt(((2 * links - ring - sprocket) * (2 * links - ring - sprocket)) - (8 / (Math::PI * Math::PI)) * (( ring - sprocket) * ( ring - sprocket)))))
end
end
我想通过传递两个成员变量之一的-name- 来调用tooth2radius 方法。像这样:
teeth2radius :ring
-OR-
teeth2radius :sprocket
Drive 对象同时包含它们,我只想用其中一个来调用它。
有没有办法做到这一点?
【问题讨论】:
-
类和方法的思想是封装,成员变量是一个实现细节,你通常不应该将它们暴露给你的方法接口。
-
为什么要定义 getter 然后绕过它们?
标签: ruby variables methods call member