我刚刚遇到了我认为类型转换的奇怪之处.我有类似以下代码:
interface IMyClass { }
class MyClass: IMyClass { }
class Main
{
void DoSomething(ICollection<IMyClass> theParameter) { }
HashSet<MyClass> FillMyClassSet()
{
//Do stuff
}
void Main()
{
HashSet<MyClass> classSet = FillMyClassSet();
DoSomething(classSet);
}
}
Run Code Online (Sandbox Code Playgroud)
当它到达DoSomething(classSet)时,编译器会抱怨它无法将HashSet <MyClass>强制转换为ICollection <IMyClass>.这是为什么?HashSet实现了ICollection,MyClass实现了IMyClass,那么为什么不能使用强制转换?
顺便说一句,这并不难解决,认为它有点尴尬.
void Main()
{
HashSet<MyClass> classSet = FillMyClassSet();
HashSet<IMyClass> interfaceSet = new HashSet<IMyClass>();
foreach(IMyClass item in classSet)
{
interfaceSet.Add(item);
}
DoSomething(interfaceSet);
}
Run Code Online (Sandbox Code Playgroud)
对我来说,这个作品的事实使得无法施展更加神秘.
我正在尝试在PL/PgSQL中编写一个函数,它必须使用它作为参数接收的表.
我在函数定义中使用EXECUTE..INTO..USING语句来构建动态查询(这是我知道这样做的唯一方法)但是...我遇到了RECORD数据类型的问题.
让我们考虑以下(极简化)示例.
-- A table with some values.
DROP TABLE IF EXISTS table1;
CREATE TABLE table1 (
code INT,
descr TEXT
);
INSERT INTO table1 VALUES ('1','a');
INSERT INTO table1 VALUES ('2','b');
-- The function code.
DROP FUNCTION IF EXISTS foo (TEXT);
CREATE FUNCTION foo (tbl_name TEXT) RETURNS VOID AS $$
DECLARE
r RECORD;
d TEXT;
BEGIN
FOR r IN
EXECUTE 'SELECT * FROM ' || tbl_name
LOOP
--SELECT r.descr INTO d; --IT WORK
EXECUTE 'SELECT ($1)' || '.descr' …
Run Code Online (Sandbox Code Playgroud) 我正在使用ruby,prawn和prawnto动态生成包含其他语言文本的pdf.我似乎无法使用非英文字符的语言显示任何文本.它不会抛出任何错误...只显示一堆破折号而不是字符.Prawn在其主页上讨论UTF-8支持,所以我不明白为什么这是一个问题.我正在使用红宝石1.8.6(发动机厂).
我想在Java应用程序中实现动态插件功能.理想的情况是:
Plugin
使用类似的方法定义接口getCapabilities()
.pluginX.jar
包含PluginXImpl
实现Plugin
(可能还有其他一些)的类的JAR .pluginX.jar
特殊目录或设置指向它的配置参数.用户不一定必须包含pluginX.jar
在他们的类路径中.PluginXImpl
(可能通过JAR清单,可能通过反射)并将其添加到注册表中.PluginXImpl
例如通过调用类似的方法来获取实例getPluginWithCapabilities("X")
.用户不一定必须知道插件的名称.我有一种感觉,我应该能够用peaberry做到这一点,但我无法理解文档.我花了一些时间学习Guice,所以我的首选答案不是"使用Spring Dynamic Modules".
任何人都可以给我一个简单的想法,如何使用Guice/peaberry,OSGi,或只是简单的Java?
我有JavaScript代码的问题,它在IE7/8中工作,但在Firefox中不起作用
for (var i = 1; i < document.getElementById(obj).rows.length; i++)
{
var numColumns = document.getElementById(obj).rows(i).cells.length;
if (numColumns > 0)
{
if (document.getElementById(obj).rows(i).cells(numColumns - 1).children.length > 1)
{
if (document.getElementById(obj).rows(i).cells(numColumns - 1).children(1).checked == true)
{
var ctrlId = document.getElementById(obj).rows(i).cells(numColumns - 1).children(1).id.replace('chk', 'txt')
workflowIds = workflowIds + (workflowIds == '' ? '' : '|') + document.getElementById(ctrlId).value;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
错误: "错误:document.getElementById(obj).rows不是函数......等"
谢谢 !!!
有谁知道历史流量数据的公共API?
一些快速的谷歌搜索从雅虎提取了一个提供实时数据的API,但我很好奇是否有人托管历史数据服务 - 即什么是"严重性"(雅虎API返回的属性之一)给定日期和时间的给定位置.
(我猜想今天不存在这样的事情,或者至少没有公共选择,因为存储的数据量非常大,但是要问......它永远不会受到伤害.)
我正在尝试将大约16000条记录插入到一个表中.因为这很慢,我想批量插入它们.但是,当我尝试这样做时,我总是会收到超时错误.所以我有两个问题:
有没有人知道Python如何管理内部int和long类型?
我该如何理解下面的代码?
>>> print type(65535)
<type 'int'>
>>> print type(65536*65536)
<type 'long'>
Run Code Online (Sandbox Code Playgroud)
更新:
>>> print type(0x7fffffff)
<type 'int'>
>>> print type(0x80000000)
<type 'long'>
Run Code Online (Sandbox Code Playgroud) 我以为我已经看到了这一切,但是...... :)
我正在研究字符串类型的通用图,
Graph<string> graph = new Graph<string>();
Run Code Online (Sandbox Code Playgroud)
使用类约束声明图形,如下所示:
public class Graph<T> where T : class
Run Code Online (Sandbox Code Playgroud)
接下来,我用一些动态生成的字符串填充图表:
for (char t = 'A'; t < 'J'; t++)
{
GraphPrim.Add(t.ToString());
}
Run Code Online (Sandbox Code Playgroud)
到目前为止一切顺利,(Node是一个内部类,包含原始值和一个对其他节点的引用列表(因为它是一个图))
现在,当我尝试在不同节点之间创建关系时,我必须通过检查其值以及怪异开始的位置来查找正确的节点.
以下代码是执行某些测试后在immidiate窗口中找到的结果的直接副本:
Nodes.First().Value
"A"
Nodes.First().Value == "A"
false
Nodes.First().Value.ToString() == "A"
true
Run Code Online (Sandbox Code Playgroud)
我完全缺少一些东西或不应该Nodes.First().值=="A"使用字符串比较方法.(JIT编译器知道运行时使用的类型,以及它支持的方法,对吧?).在我看来,当没有明确指定字符串时,它会进行引用检查而不是字符串测试.
如果有人可以向我解释这一点,那就太好了,
提前致谢!
后面的代码用于显示和隐藏Mega Dropdown.如果你鼠标悬停在'dropDown'类的链接上,那么它的子节点'.dropPanel'会显示.只要您的鼠标位于链接或下拉面板上,就会显示下拉面板.将光标移动到链接或面板的任何位置,并隐藏面板.很基本的东西.
在其中一些Mega Dropdown中,有些表格包含选择元素.在Firefox中,一切都很好.在IE中(具体来说,8没有测试过任何其他版本),如果你鼠标悬停在下拉面板中的select元素上,hoverIntent将触发dropPanelOff()的'out'函数,并且下拉面板会隐藏.
我该如何防止这种情况?
// Apply Hover Intent to Menu Panels
$(".dropDown").hoverIntent({
sensitivity: 10,
interval: 150,
over: dropPanelOn,
timeout: 150,
out: dropPanelOff
});
// Menu Over function call
function dropPanelOn() {
$('a[rel="dropLink"]', this).addClass('hover');
$('.dropPanel', this).slideDown('fast');
}
// Menu Out function call
function dropPanelOff() {
obj = this;
$('.dropPanel', this).slideUp(100, function(){
$('a[rel="dropLink"]', obj).removeClass('hover');
$('.dropLink span', obj).removeClass('hover');
});
}
Run Code Online (Sandbox Code Playgroud)