我阅读了William Cook的"On Data Abstraction,Revisited",并重读了Ralf Laemmel的"表达引理",试图理解如何在Haskell中应用前一篇论文的思想.所以,我试图理解你如何在没有指定类型的情况下在Haskell中实现例如集合联合函数?
似乎IDLE(标准Python Windows安装的一部分)将不会正确执行多线程程序而不会出现令人讨厌的挂起或错误崩溃.有谁知道解决这个问题的方法?
以下程序将始终挂在IDLE中,但在使用Python解释器直接执行时正常完成:
import threading, time
printLock = threading.Lock()
def pl(s):
printLock.acquire()
print s
printLock.release()
class myThread( threading.Thread ):
def run(self):
i = 0
for i in range(0,30):
pl(i)
time.sleep(0.1)
t = myThread()
t.start()
while threading.activeCount() > 1:
time.sleep(1)
pl( time.time() )
print "all done!"
Run Code Online (Sandbox Code Playgroud)
样本输出:
U:\dev\py\multithreadtest>python mt.py
0
1
2
3
4
5
6
7
8
9
1277935368.84
10
11
12
13
14
15
16
17
18
19
1277935369.84
20
21
22
23
24
25
26
27
28
29 …Run Code Online (Sandbox Code Playgroud) 我正在构建一个类似热图的矩形阵列接口,我希望"热"位置位于数组的左上角,而"冷"位置位于右下角.因此,我需要一个对角填充的数组,如下所示:
0 1 2 3
|----|----|----|----|
0 | 0 | 2 | 5 | 8 |
|----|----|----|----|
1 | 1 | 4 | 7 | 10 |
|----|----|----|----|
2 | 3 | 6 | 9 | 11 |
|----|----|----|----|
Run Code Online (Sandbox Code Playgroud)
所以实际上,我需要一个函数f(x,y)
f(0,0) = 0
f(2,1) = 7
f(1,2) = 6
f(3,2) = 11
Run Code Online (Sandbox Code Playgroud)
(或者,当然,类似的函数f(n)其中f(7)= 10,f(9)= 6等).
我正在编写一个旨在通话期间运行的应用程序.在用户拨打电话并启动我的应用程序后,我希望我的应用程序能够知道是否从错误连接中删除了呼叫.这可能吗?谢谢
今天我发现了一个非常奇怪的C#函数重载行为.当我有一个方法有2个重载,一个接受对象,另一个接受任何类型的枚举时,会出现问题.当我将0作为参数传递时,将调用该方法的Enum版本.当我使用任何其他整数值时,将调用Object版本.我知道这可以通过使用显式转换来轻松修复,但我想知道为什么编译器会以这种方式运行.这是一个错误还是我不知道的一些奇怪的语言规则?
下面的代码解释了问题(使用运行时2.0.50727检查)
感谢您对此的任何帮助,Grzegorz Kyc
class Program
{
enum Bar
{
Value1,
Value2,
Value3
}
static void Main(string[] args)
{
Foo(0);
Foo(1);
Console.ReadLine();
}
static void Foo(object a)
{
Console.WriteLine("object");
}
static void Foo(Bar a)
{
Console.WriteLine("enum");
}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用道场.我有这样的事情:
<a id="fooBar" onclick="foo();bar();">Foo then Bar</a>
Run Code Online (Sandbox Code Playgroud)
我想fooBar从另一个按钮触发点击处理程序.就像是:
<a onclick="dojo.query('#fooBar')[0].click()">Do FooBar</a>
Run Code Online (Sandbox Code Playgroud)
我能这样做吗?
我有一个void *,叫它data,我知道它的长度,但不是空终止.我打这样的电话snprintf(line, sizeof(line), "%*s", n, (const char*)data),其中n已知的长度.几乎总是这样,但偶尔会导致段错误.
每当发生段错误时,后面跟踪表明问题出在strlen内部.当我data在gdb中打印时,我看到这样的东西
(gdb) p n
$1 = 88
(gdb) p (const char*) data
$2 = 0x1d752fa8
"JASDF" ... "ADS"<Address 0x1d753000 out of bounds>
(gdb) p 0x1d753000-0x1d752fa8
$3 = 88
Run Code Online (Sandbox Code Playgroud)
data确实是88个字符,但不是空终止,事实上,它似乎正好对着一个段.我的猜测是snprintf在数据上总是被称为strlen,我通常很幸运,即使data不是null终止,\0在我点击段之前还有一段时间我偶然发现它是不幸的.是对的吗?如果是这样,那是什么工作?
这就是堆栈跟踪的样子
#0 0x0000003c8927839e in strlen () from /lib64/libc.so.6
#1 0x0000003c89246749 in vfprintf () from /lib64/libc.so.6
#2 0x0000003c8926941a in vsnprintf () from /lib64/libc.so.6
#3 0x0000003c8924d0a3 in snprintf () from /lib64/libc.so.6 …Run Code Online (Sandbox Code Playgroud) 我想知道如何从水平轴X获得AB线的角度.SO中的其他问题仅在两条线之间进行.我知道我总是可以绘制第二行AC并计算,但我想知道是否有更快的方法.
编辑:我很确定我没有做过早优化.
我有 3 个班级:A、B 和 C
所有这些类都实现了一个接口 IMyInterface
我希望接口像这样定义:
internal IMyInterface<E> where E: class
{
E returnData();
}
Run Code Online (Sandbox Code Playgroud)
以便它可以返回类型 E 的数据。类型“E”将是使用实体框架 v4 创建的 POCO 对象。
在一个单独的课程中,我有:
public class MyClass()
{
IMyInterface<??> businessLogic;
public setBusinessLogic(IMyInterface<E> myObject)
where E : class
{
businessLogic = myObject;
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试<object>代替,<??>但它无法转换我的 poco 实体类型。
我尝试让我的实体实现一个空接口,IEntity然后使用
IMyInterface<IEntity> businessLogic;
...
businessLogic = new A<POCOObject>();
Run Code Online (Sandbox Code Playgroud)
结果是:
Cannot implicitly convert type
'A<POCOObject>' to
'IMyInterface<IEntity>'. An explicit
conversion exists (are you missing a
cast?)
Run Code Online (Sandbox Code Playgroud)
有什么建议吗?
编辑: …
我试着在我创建的表面视图上写一些文字.它的工作正常,如果title为false,并且没有为文本添加换行符.但是,如果我添加标题并因此添加换行符,则不会按预期打印换行符,而是打印此符号[].
任何提示为什么?
@Override
public void drawObject() {
String text = "";
if (title) {
text = getGameBoard().getGame().getForeignProfile().getName() + "\n";
}
text = text + getScoreAsString();
getGameBoard().getCanvas().drawText(text, 0, text.length(), getPosition().getX(), getPosition().getY(), getPaint());
}
Run Code Online (Sandbox Code Playgroud)