如果我有4个具有以下层次结构的类:
class MainClass < ActiveRecord::Base
...
end
class SubClassA < MainClass
...
end
class SubClassB < MainClass
...
end
class SubClassC < MainClass
...
end
Run Code Online (Sandbox Code Playgroud)
如何在不经过并创建其他每个类的实例的情况下获取MainClass的子类列表?
在一个新的IRB会议中,我可以进去说
irb(main)> MainClass.descendants
=> []
Run Code Online (Sandbox Code Playgroud)
但是,如果我经历并创建每个子类的实例,我将看到以下内容
irb(main)> SubClassA.new
=> #<SubClassA ...>
irb(main)> SubClassB.new
=> #<SubClassB ...>
irb(main)> SubClassC.new
=> #<SubClassC ...>
irb(main)> MainClass.descendants
=> [SubClassA(...), SubClassB(...), SubClassC(...)]
Run Code Online (Sandbox Code Playgroud)
我基本上是在寻找一种方法来提供所有子类的方法,以便将来当我想添加SubClassD,SubClassE等时,我不必担心每个人都会在代码中实例化,然后用户才能看到它们.
自从 Youtube 关闭了其最新版本 API 的 RSS 搜索源以来,我一直在尝试使用 Google App Script 重新创建它们。这是我到目前为止所得到的(基于将 Twitter 小部件转换为 RSS 的教程):
function getSearches(a){
try{
var rss,title,link;
title="Youtube RSS Feed";
link="http://www.youtube.com";
var d=ScriptApp.getService().getUrl()+"?"+a;
rss='<?xml version="1.0"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">';
rss+='<channel><title>'+title+'</title>';
rss+='<link>'+link+'</link>';
rss+='<atom:link href="'+d+'" rel="self" type="application/rss+xml" />';
rss+='<description>Youtube RSS feed updated on '+new Date()+'.</description>';
var results = YouTube.Search.list('id, snippet', {
q: a,
maxResults: 50,
order: 'date'
});
for(var i = 0; i < results.items.length; i++){
var item = results.items[i];
rss += "<item>";
rss += "<title>" + item.snippet.title + "</title>"; …Run Code Online (Sandbox Code Playgroud) 有没有办法在柱形图中为每列添加一行?例如,我将测试分数绘制为列.每个测试都有一个最小的通过等级,我希望在该列上显示为一行,并可能添加一个显示通过等级的工具提示.每次测试的及格分数并不总是相同.如果测试等级不符合合格等级,则低于该等级; 如果超过通过等级,该行将出现在列上.