Tldr:我如何包括鞋子方法'进入Array类和我创建的类,用最少的代码,而不是完全重构一切?
我已经在Ruby中编写了一个正常运行的程序,现在我想从中创建一个Shoes应用程序。
我遇到了手册开头所描述的问题 - Shoes.app本身就是一种阻碍,所以自我总是指它,鞋子的方法就像" para"并不一定会随处可用" put"在Ruby中。但是我没有足够的智慧来修复它(我只是在使用自我并且回归纯粹的Ruby,与我一起承担)
例如,我为Array:putdata创建了一个新方法,它循环显示学生的测试分数数组,并自动显示每个数组:
self.each do |ea|
puts/para "#{ea.topic}: #{ea.score}"
end
在ruby中工作。不适用于Shoes:Array类无法访问方法段。我试过了:
我已经通过以下方式运作: 1.从Array类中删除这段代码,并使其成为浮点/泛型方法而不是Array方法 2.私人方法错误 - >然后改写它而不是一个Array方法(array.putdata)它是一个将数组作为参数的通用方法(putdata(array))
但我真的,真的不想通过我的代码并单独取消组织它。
这是我的第一个1000线计划,有42种方法,我努力使它尽可能保持整洁,所有东西都隐藏在课堂或方法中以便于维护。我从大量的,逐步的通用方法到大量的快速方法中得到了它,这似乎更像是OOP的意图。现在,我可以看到使这项工作的唯一方法是UN-OOP它,没有类方法或任何东西。
我希望我可以从这个整洁,功能性的后端无缝地推送程序:Ruby程序有很多"如果string ==" SAVE&#34 ;, save(student);别的...",所以我希望直接弹出" button.click {save(student)}"使用相同的反码。
#我有什么基本的东西让我这么做吗?我能否轻松解决para问题,因为我的所有类都包含显示自己数据的方法?我想要copypasta"包括鞋子方法'"在每个班级的顶部,并完成。
或者我是否需要从一开始就考虑使用GUI?
(关于我的计划的信息:
布局是一系列页面,从侧边栏链接,使用索引与链接页面直接从Nobody Knows Shoes书籍或类书样本中复制。
学生可以输入他们的新关卡,并查看他们当前进度的读数。
主要"部分有通用的方法"该程序包含页面标题和一些指令之类的东西,然后调用学生对象或模块方法按照用户的指示执行操作。
更高级别:学生是一个自定义课程,使用类似"保存","显示扁平化数据","如果此ELSE不在,则为您的级别添加一个" 39; t"和相关的数据位,就像一个包含所有课程对象的数组。
每个课程也是一个自定义类("模块"),它有分数,模块名称等作为变量,以及一些微小的方法,如显示格式化名称,或者在此模块中添加一个。)
答案 0 :(得分:0)
我很高兴看到关于鞋子的问题,这已经很久了。 你是第一个这样的新人:你的问题太详细了,阅读太多,信息太少,无法帮助你。 你需要提供错误的代码或不做你期望的代码,我们可以接管和尝试的东西。这意味着从您自己运行的代码测试或代码段中提取并显示问题。
我们还需要知道您使用的是哪个Ruby版本以及哪种版本和颜色的鞋子。我将使用的例子是绿色鞋子。
我确信以下内容并不完全是你所追求的,但我根据你对一个数组的描述做了一个样本,需要用puts和para列出。
如果这不是您所追求的问题,请更改问题或制作新问题。
require 'green_shoes'
s = Struct.new(:topic, :score)
s1 = s.new("test1", 1)
s2 = s.new("test2", 2)
A = [s1, s2]
class Array
def putsdata(shoes = nil)
if shoes.class == Shoes::App
self.each do |ea|
shoes.para "#{ea.topic}: #{ea.score}"
end
else
self.each do |ea|
puts "#{ea.topic}: #{ea.score}"
end
end
end
end
A.putsdata
# gives in the console
# test1: 1
# test2: 2
Shoes.app do
A.putsdata(self)
end
# gives in a graphic window
# test1: 1
# test2: 2
看跌期权也适用于鞋块,但当然结果不会出现在图形窗口中,而是出现在第一个列表之后的控制台上。