我想更改默认模板层次结构行为,并强制所有没有自己的类别模板文件的子类别级别页面引用其父类别模板文件.在我的另一篇文章中,Richard M.给出了一个很好的答案,解决了个别子类别的问题.有谁知道如何抽象它?
function myTemplateSelect()
{
if (is_category()) {
if (is_category(get_cat_id('projects')) || cat_is_ancestor_of(get_cat_id('projects'), get_query_var('cat'))) {
load_template(TEMPLATEPATH . '/category-projects.php');
exit;
}
}
}
add_action('template_redirect', 'myTemplateSelect');
Run Code Online (Sandbox Code Playgroud)
提前致谢.
(事先原谅noob问题)
我有4个班:
class Person {};
class Student : public Person {};
class Employee : public Person {};
class StudentEmployee : public Student, public Employee {};
Run Code Online (Sandbox Code Playgroud)
基本上Person是基类,其直接由两个子类Student和Employee.StudentEmployee使用多重继承来子类化Student和Employee.
Person pat = Person("Pat");
Student sam = Student("Sam");
Employee em = Employee("Emily");
StudentEmployee sen = StudentEmployee("Sienna");
Person ppl[3] = {pat, sam, em};
//compile time error: ambiguous base class
//Person ppl[4] = {pat, sam, em, sen};
Run Code Online (Sandbox Code Playgroud)
当我使用Person基类的数组时,我可以将Person它的所有子类放在这个数组中.除了StudentEmployee,给出基础模糊的原因. …
一般的问题是在为现有对象添加实例时哪个模块结构更方便?有哪些优点和缺点?
假设我想为Seq类型添加NFData实例.我可以把它放在:
Data.Sequence.Extra(在vty包中做同样的事情)Data.Sequence.Instances.NFData (更确切)Control.DeepSeq.InstancesControl.DeepSeq.Instances.Sequence当我既没有类型类也没有数据类型时就是这种情况.另一种常见的情况是,我拥有一个类型类型,并希望从Hackage的一些"重"包中添加数据类型的实例,比如OpenGL.假设我设计的类型类很轻,与OpenGL没有直接关系.我不希望我的类型类依赖于"重"包,所以我想将OpenGL实例放在一个单独的模块中(这是我的直觉,如果你有其他意见,我们来讨论它).那么,这个模块应该是什么:
MyClass.Instances.OpenGLGraphics.Rendering.OpenGL.Extra (连同其他课程的实例)Graphics.Rendering.OpenGL.Instances.MyClass什么是更灵活的解决方案?在某些时候,OpenGL可以替换为其他库,或者也可以替换MyClass.有微妙的细微差别吗?
此外,如果选择MyClass.Instances变体,哪个方案更好:
MyClass.Class类本身的模块和基本实例和MyClass模块重新导出它(也许MyClass.Instances)MyClass类和基本实例的模块,并重新MyClass.All导出所有内容MyClass 类和基本实例的模块,没有用于重新导出的模块.简单来说,我正在尝试计算其父项所拥有的树的根的百分比,进一步在树上.我怎么能单独用SQL做这个?
这是我的(样本)架构.请注意,虽然层次结构本身很简单,但还有一个额外的holding_id,这意味着单个父母可以"拥有"他们孩子的不同部分.
create table hierarchy_test (
id number -- "root" ID
, parent_id number -- Parent of ID
, holding_id number -- The ID can be split into multiple parts
, percent_owned number (3, 2)
, primary key (id, parent_id, holding_id)
);
Run Code Online (Sandbox Code Playgroud)
还有一些样本数据:
insert all
into hierarchy_test values (1, 2, 1, 1)
into hierarchy_test values (2, 3, 1, 0.25)
into hierarchy_test values (2, 4, 1, 0.25)
into hierarchy_test values (2, 5, 1, 0.1)
into hierarchy_test values (2, 4, …Run Code Online (Sandbox Code Playgroud) 解释这有点棘手.我有一个A类:
public class A {
private Integer a1;
private Integer a2;
// getters and setters.
}
Run Code Online (Sandbox Code Playgroud)
有一个静态类B返回我的类A:
public static class B {
public static A getCurrentA() {
return a;
}
}
Run Code Online (Sandbox Code Playgroud)
我需要找到B返回的所有A类用法.所以让我们说C级呼叫c.setA(B.getCurrentA()),然后再进一步调用c.getA().getA2();,我想找到所有这些.
在真实场景中,我有217个不同的类调用B.getCurrentA().我不能手动跟踪Eclipse中的所有调用,并找出调用哪些方法.
Eclipse调用层次结构视图仅向我显示所有调用B.getCurrentA().
我怎样才能做到这一点?
编辑
克里斯海耶斯明白我想做什么.为了在不破坏整个系统的情况下重构一些非常糟糕的遗留代码,我需要首先使用Hibernate的投影微调一些查询(系统中的每个映射实体都被急切加载,并且许多实体是相关的,因此一些查询需要很长时间时间取出一切).但首先我需要找到使用哪些属性,以便我不会在某处获得NullPointerException ...
这是我手动做的一个例子:
打开找到的第一个方法,让我们说它是下面的方法:
public class CController {
C c = new C();
CFacade facade = new CFacade();
List<C> Cs = new ArrayList<C>();
public void getAllCs() {
c.setA(B.getCurrentA()); // found it!
facade.search(c);
} …Run Code Online (Sandbox Code Playgroud)我经常遇到一个由接口或类表示的概念,然后我有一系列扩展它的子类/子接口.
例如:通用"DoiGraphNode"表示资源的"DoiGraphNode"表示Java资源的"DoiGraphNode"具有相关路径的"DoiGraphNode"等.
我可以想到三个命名约定,并希望评论如何选择.
选项1:始终以概念的名称开头.
因此:DoiGraphNode,DoiGraphNodeResource,DoiGraphNodeJavaResource,DoiGraphNodeWithPath等.
亲:很清楚我在处理什么,很容易看到我的所有选项
骗局:不是很自然?一切看起来都一样吗?
选项2:将特殊内容放在开头.
因此:DoiGraphNode,ResourceDoiGraphNode,JavaResourceDoiGraphNode,PathBaseDoiGraphNode等等.
亲:我在代码中看到的很清楚
Con:发现它可能很困难,特别是如果我不记得名字,缺乏视觉一致性
选项3:放入特殊内容并删除一些冗余文本
因此:DoiGraphNode,ResourceNode,JavaResourceNode,GraphNodeWithPath
Pro:没有那么多写和读Con:看起来像cr*p,非常不一致,可能与其他名称冲突
Clojure用于创建关键字临时层次结构的系统对于花费一些时间使用该语言的大多数人来说都很熟悉.例如,该语言的大多数演示和演示包括诸如的示例
(derive ::child ::parent)
Run Code Online (Sandbox Code Playgroud)
然后他们继续展示如何将其用于多方法调度.
在我看过的所有幻灯片和演示文稿中,他们使用全局层次结构.但是可以通过使用(derived h :: child :: parent)将关键字关系放在独立的层次结构中,其中h由(make-hierarchy)创建.因此,有些问题:
合并特别有用,所以我这样做:
(defn merge-h [& hierarchies]
(apply merge-with (cons #(merge-with clojure.set/union %1 %2) hierarchies))
Run Code Online (Sandbox Code Playgroud)
但我想知道这些功能是否已存在于某处.
编辑:将"自定义"层次结构更改为"独立"层次结构,因为该术语更好地描述了这种动物.此外,我做了一些研究,并在下面包括我自己的答案.欢迎进一步评论.
我正在尝试基于http://mbostock.github.com/d3/talk/20111116/bar-hierarchy.html做一个图表,唯一的区别是我想使用x-的对数刻度轴.
这是我的小提琴:http://jsfiddle.net/JhDVC/5/
如您所见,x轴在第4行定义:
x = d3.scale.linear().range([0, w]),
Run Code Online (Sandbox Code Playgroud)
如果我改变它
x = d3.scale.log().range([0, w]),
Run Code Online (Sandbox Code Playgroud)
然后它不起作用(没有渲染),抛出这些错误消息:
Error: Invalid value for <rect> attribute width="NaN"
Run Code Online (Sandbox Code Playgroud)
更改域设置
x.domain([0, root.value]).nice();
Run Code Online (Sandbox Code Playgroud)
至
x.domain([1, root.value]).nice();
Run Code Online (Sandbox Code Playgroud)
向我显示z轴(名称)但仍然没有条形或值.
我有一个非技术客户,他有一些分层产品数据,我将用Python加载到树结构中.树具有可变数量的级别,并且每个级别具有可变数量的节点和叶节点.
客户端已经知道产品的层次结构,并希望将所有内容放入Excel电子表格中供我解析.
我们可以使用哪种格式允许客户端轻松输入和维护数据,并且可以使用Python的CSV轻松解析为树?为每个级别添加一个列并不是没有打嗝(特别是如果我们引入多个节点类型)
我有一张有田地的桌子varchar.该字段存储我想要订购的分层号码.
以下是我的数据示例:
1
1.1
1.1.1
1.1.2
1.1.3.
1.1.4
1.1.5
1.1.6.
1.1.7
10.
10.1
10.2
10.3
11.
11.1
11.2
2.
2.1
1.2.2
1.2.2.1
1.2.2.2
Run Code Online (Sandbox Code Playgroud)
如何通过以下方式获得以下结果T-SQL:
1
1.1
1.1.1
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.7
1.2.2
1.2.2.1
1.2.2.2
2.
2.1
10.
10.1
10.2
10.3
11.
11.1
11.2
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下SQL拆分部件,但这并不优雅.
SELECT CASE WHEN CHARINDEX('.',SUBSTRING(LTRIM(RTRIM(NR)),1,LEN(NR)-1)+REPLACE(SUBSTRING(LTRIM(RTRIM(NR)),LEN(NR),1),'.','')) = 0
THEN SUBSTRING(LTRIM(RTRIM(NR)),1,LEN(NR)-1)+REPLACE(SUBSTRING(LTRIM(RTRIM(NR)),LEN(NR),1),'.','')
ELSE REPLACE(SUBSTRING(SUBSTRING(LTRIM(RTRIM(NR)),1,LEN(NR)-1)+REPLACE(SUBSTRING(LTRIM(RTRIM(NR)),LEN(NR),1),'.',''),1, CHARINDEX('.',SUBSTRING(LTRIM(RTRIM(NR)),1,LEN(NR)-1)+REPLACE(SUBSTRING(LTRIM(RTRIM(NR)),LEN(NR),1),'.',''))),'.','')
END AS FIRST_PART
,CASE WHEN CHARINDEX('.',SUBSTRING(LTRIM(RTRIM(NR)),1,LEN(NR)-1)+REPLACE(SUBSTRING(LTRIM(RTRIM(NR)),LEN(NR),1),'.','')) > 0
THEN SUBSTRING(
SUBSTRING(LTRIM(RTRIM(NR)),1,LEN(NR)-1)+REPLACE(SUBSTRING(LTRIM(RTRIM(NR)),LEN(NR),1),'.','')
,CHARINDEX('.',SUBSTRING(LTRIM(RTRIM(NR)),1,LEN(NR)-1)+REPLACE(SUBSTRING(LTRIM(RTRIM(NR)),LEN(NR),1),'.','')) +1
,LEN( SUBSTRING(LTRIM(RTRIM(NR)),1,LEN(NR)-1)+REPLACE(SUBSTRING(LTRIM(RTRIM(NR)),LEN(NR),1),'.','') )
)
ELSE '0' …Run Code Online (Sandbox Code Playgroud) hierarchy ×10
sql ×2
bar-chart ×1
c++ ×1
clojure ×1
connect-by ×1
csv ×1
d3.js ×1
eclipse ×1
excel ×1
haskell ×1
instance ×1
java ×1
javascript ×1
keyword ×1
module ×1
naming ×1
oop ×1
oracle ×1
oracle11gr2 ×1
polymorphism ×1
python ×1
sql-server ×1
t-sql ×1
templates ×1
tree ×1
typeclass ×1
wordpress ×1