一种理论问题.很长一段时间,如果你没有理论的心情,请随意跳过.
想象一下,你有两个类,一个继承自另一个.基类是通用的,并且有一个方法,在闭合类型中必须返回此闭合类型的某个实例.
像这样(注意文字中的???):
public class Adapter<T>
{
public virtual ??? DoSomething()
{
...
}
}
public class AdaptedString : Adapter<String>
{
public override AdaptedString DoSomething()
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
我不能这样做,因为没有办法引用将从泛型类型派生的闭合类型.(对不起破解语言,只是不知道如何表达它.)没有设置关键字???来指定此方法将返回将从此泛型类型派生的类型实例.
相反,我可以使用显式将类型名称传递给通用基础的变通方法.但它看起来多余.
public class Adapter<TThis,T>
{
public virtual TThis DoSomething()
{
...
}
}
public class AdaptedString : Adapter<AdaptedString,String>
{
public override AdaptedString DoSomething()
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
如果在基类中我需要访问TThis实例的成员,我必须添加一个约束.这一次看起来很难看 - 请注意约束:
public class Adapter<TThis,T>
where TThis : Adapter<TThis, T>
{
protected int _field;
...
public …Run Code Online (Sandbox Code Playgroud) 如何在DBI查询中使用变量作为表的名称?我知道如何使用占位符作为where子句的一部分,但是如何为表名执行此操作?
我想做这样的事情:
my $table_name='table1';
my $query = $dbh_cgi->prepare("select * from ?");
$query->execute($table_name);
Run Code Online (Sandbox Code Playgroud)
到目前为止,我最终得到MySQL语法错误,因为DBI在名称table1周围添加了引号.
这是我的情景:
我需要通过Perl生成XML,其中模式中充满了<xs:sequence>标记(即标记必须按顺序出现).我无法控制架构(第三方),每当我们添加新的CPAN模块(没有很好的方式将它们传播给客户等)时,我们已经基本上禁止这些模块出现了很多问题.添加任何新内容(如XML::Writer).
在我手上XML模块是:XML::Parser,XML::Simple,XML::XPath.
我真的很喜欢XML::Simple你创建一个hashref w/hash/arary refs数据结构然后只是吐出XML的方式.
反正有没有这样做XML::Simple?或者也许滚动我自己的代码按顺序吐出XML?似乎我最大的问题是我需要以插入顺序从hashref中提取内容,而Perl并没有真正做到这一点.我确实读到过Tie::IxHash以插入顺序拉出来的东西,但同样,我没有的模块.
感觉我有点像SOL,但肯定会感谢有人可能有的任何技巧/想法.谢谢.
我不知道这里发生了什么,并希望有人可以提供帮助,我确信这是一件容易的事,我只是想念.
我在javascript中有一个函数,里面有一个JQuery帖子.我想返回帖子的结果,它只是文本并将其放在变量中.数字从Post正确返回,但是当我把它放在变量中时,变量显示为"undefined".有任何想法吗?
var total = GetTotalSize();
alert(total);
function GetTotalSize(){
var i = "";
$.post("Handlers/GetTotal.ashx", {id : $("#hID").val()}, function(data){
i = data.toString();
return i;
});
}
Run Code Online (Sandbox Code Playgroud) 我刚问了一个关于访问STL适配器的底层容器的问题.我得到了一个非常有用的答案:
template <class T, class S, class C>
S& Container(priority_queue<T, S, C>& q) {
struct HackedQueue : private priority_queue<T, S, C> {
static S& Container(priority_queue<T, S, C>& q) {
return q.*&HackedQueue::c;
}
};
return HackedQueue::Container(q);
}
int main()
{
priority_queue<SomeClass> pq;
vector<SomeClass> &tasks = Container(pq);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,我无法理解这一行:
return q.*&HackedQueue::c;
Run Code Online (Sandbox Code Playgroud)
这条线做什么?此外,该行怎么可以访问私有容器priority_queue传递给函数Container?
>>> from PyQt4 import QtCore
>>> str = QtCore.QString('Hello')
AttributeError: 'module' object has no attribute 'QString'
>>> QtCore.QString._init_(self)
AttributeError: 'module' object has no attribute 'QString'
Run Code Online (Sandbox Code Playgroud)
是的,我读过QString Class Reference
为什么我不能导入QString来自QtCore,如文档指定?
我们需要在我们的产品目录管理软件中集成搜索引擎.该目录预计将超过4-5百万.关系数据的记录分布在几个表中.我们的开发平台是Asp.Net 3.5,我们已经对Lucene做了一些初步的工作,发现它很好.然而,我们刚刚了解了Solr并且正在寻找一些实用的技巧来比较Lucene和Solr的实现,时间表,定期维护,性能,功能.任何指导或指示都会非常有用.谢谢.
这是一个编译器警告,并且通常不赞成在代码中使用未使用的变量.因此,以下将生成警告,因为e未使用
try {
throw new InvalidOpreationException();
}
catch(Exception e) {
}
Run Code Online (Sandbox Code Playgroud)
这样做的正确方法是除非您要使用它,否则不要给该例外命名:
try {
throw new InvalidOpreationException();
}
catch(Exception) {
}
Run Code Online (Sandbox Code Playgroud)
但是这种"正确"的做事方式在调试时可能会很麻烦.您可以在catch中设置断点,但除非您停止应用程序,命名异常,重新编译并重新创建错误,否则您将不知道为什么到达那里.至少可以说这很烦人.
踢球者是该异常仍然存在,它在这个范围内没有明确的名称.有什么方法可以访问它吗?
我有一个我需要编写的C类程序.程序要求数量,我需要将该数量乘以用户输入的另一个变量.ac类的基本计算器脚本:)
我把它设置成这样,
int qty; //basic quantity var
float euro, euro_result;
//assign values to my float vars
euro = .6896; //Euro Dollars
euro_result = euro * qty; // Euro Dollars multiplied by user input qty
//start program for user
printf("Enter a quantity: ");
//alow user to input a quantity
scanf("%d", &qty);
printf("Euro: %f \n", euro_result);
Run Code Online (Sandbox Code Playgroud)
为什么它不能按预期工作?
我认为这个问题对你们大多数人来说可能是微不足道的,但不知何故我找不到答案......所以,我在这个解决方案中有一个Visual Studio 2008解决方案foo和一个项目栏.在我的酒吧项目中,我有一个名为baz的目录,它看起来像这样:
foo dir
|
+-> bar dir
|
+-> baz dir
|
+-> asd file
Run Code Online (Sandbox Code Playgroud)
现在我想在bar-project中打开我的"asd文件",但需要"asd文件"的确切路径,我该如何找到它?我试过简单的"baz\asd",但它不起作用.
谢谢!
Ĵ