想象一下这堂课
public class Foo {
private Handler _h;
public Foo(Handler h)
{
_h = h;
}
public void Bar(int i)
{
_h.AsyncHandle(CalcOn(i));
}
private SomeResponse CalcOn(int i)
{
...;
}
}
Run Code Online (Sandbox Code Playgroud)
Mo(q)cking Handler在Foo的测试中,我怎样才能检查Bar()传递给了_h.AsyncHandle什么?
resp = raw_input("What is your favorite fruit?\n")
if "I like" in resp:
print "%s" - "I like" + " is a delicious fruit." % resp
else:
print "Bubbles and beans."
Run Code Online (Sandbox Code Playgroud)
好的,我知道这段代码不起作用,我知道为什么.您不能像数字一样相互减去字符串.
但有没有办法打破一个字符串,只使用部分响应?并且通过"有一种方式"我的意思是"如何",因为在编程中一切皆有可能.:d
我正试图从头开始编写我的第一个聊天机器人.
我有一个getcwd()用于获取当前工作目录的构建系统工具.这很好,除了有时人们的路径中有空格,构建系统不支持.你认为你可以只做一个符号链接:
ln -s "Directory With Spaces" DirectoryWithoutSpaces
Run Code Online (Sandbox Code Playgroud)
然后开心.但不幸的是,对我来说,getcwd()解决了所有的符号链接.我尝试使用getenv("PWD"),但它没有指向我回来的路径getcwd().我认为我责备make -C不更新环境变量.现在,getcwd()给我一条这样的道路:
/Users/carl/Directory With Spaces/Some/Other/Directories
Run Code Online (Sandbox Code Playgroud)
并getenv("PWD")告诉我:
/Users/carl/DirectoryWithoutSpaces
Run Code Online (Sandbox Code Playgroud)
那么 - 是否有任何类似的功能getcwd()无法解析符号链接?
编辑:
我变了
make -C Some/Other/Directories
Run Code Online (Sandbox Code Playgroud)
至
cd Some/Other/Directories ; make
Run Code Online (Sandbox Code Playgroud)
然后getenv("PWD")工作..如果没有其他解决方案,我可以使用它.
Python 扩展模块只是动态库,因此我认为可以将 Python 扩展动态链接到另一个扩展。问题是在 Windows 上,Python 扩展被赋予了.pyd扩展名而不是.dll,所以当我运行安装脚本时,我无法让 distutils 链接到它们。(我不认为这是 UNIX 上的问题,因为 Python 扩展使用.so文件扩展名。)
假设我有一个bar.pyd需要链接到foo.pyd. 基本上,我在设置脚本中所做的是:
from distutils.core import setup, Extension
foo = Extension("foo", sources=["foo.c"])
bar = Extension("bar", libraries=["foo"], sources=["bar.c"])
setup(ext_modules=[foo, bar])
Run Code Online (Sandbox Code Playgroud)
到目前为止,这是行不通的。这甚至可能吗?我想是的,但我一直无法在网上找到任何东西。我在 Windows 上使用 MinGW,但我希望它可以与不同的 MSVC++ 和其他系统一起使用。
编辑:以前,我通过将编译foo.o时创建的目标文件 ( )传递foo给extra_objects扩展中的选项来解决此问题(这仅在我定义了 中所有foo符号的原型时才有效bar):
bar = Extension("bar", sources=["bar.c"], extra_objects=["build/.../foo.o"]
Run Code Online (Sandbox Code Playgroud)
这似乎不是正确的解决方案,但它奏效了。我不太了解动态链接,所以这可能是正确的方法。不过感觉很不对劲。
然后,我尝试将一些显式参数传递给 gcc 以使其编译导入库:
foo = Extension("foo", sources=["foo.c"], extra_compile_args=["-Wl,--out-implib,foo.lib,--export-all-symbols"])
Run Code Online (Sandbox Code Playgroud)
然后我链接bar到新的导入库:
bar …Run Code Online (Sandbox Code Playgroud) int x = 5;
cout<<(char)x;
Run Code Online (Sandbox Code Playgroud)
上面的代码在原始二进制文件中输出一个int x,但只有1个字节.我需要它做的是输出x作为二进制4字节,因为在我的代码中,x可以是0到2 ^ 32-1之间的任何地方,因为
cout<<(int)x;
Run Code Online (Sandbox Code Playgroud)
不做的伎俩,我该怎么做?
我已经多次发布这个问题而没有有用的答案.我想在我的iPhone应用程序中将工具栏放在我的UIKeyboard上方,但是我遇到了困难.我发现这个例子非常有效,只是我的视图UITableView不是标准[self.view addsubview:...].任何人都可以弄清楚如何应用这个UITableView?简而言之,UITextFields我的表格单元格中有几个,所以我希望工具栏出现在键盘上方,用于那些单元格.
非常感谢,布雷特
什么是报告JavaScript中的错误而不是依赖于null的好方法,以及当错误发生且函数无法继续前进时的未定义.我可以想到三种方法:
这是一个简单的示例场景 - 一个函数,用于记入传入的用户帐户.该函数credit是Account对象的一部分.
这是天真的解决方案.
function credit(amount) {
this.balance += amount;
}
Run Code Online (Sandbox Code Playgroud)
这种方法的一个主要问题是无效数据.让我们修复它,并使用返回值来指示操作失败.
function credit(amount) {
if(!isInt(amount)) {
return false;
}
this.balance += amount;
}
Run Code Online (Sandbox Code Playgroud)
这是对前一个的改进,但客户端代码必须检查返回值以确保操作成功.对基本上系统中的每个方法执行此操作可能会变得很麻烦.
if(!johnDoe.credit(100)) {
// do some error handling here
}
Run Code Online (Sandbox Code Playgroud)
第三种方法,类似于第二种方法,是抛出异常.由于我们自己抛出异常,因此可能抛出特定类型的异常而不是普通异常.
function credit(amount) {
if(!isInt(amount)) {
throw new InvalidAmountError(amount);
}
this.balance += amount;
}
Run Code Online (Sandbox Code Playgroud)
类似于抛出异常的第四种方法是在代码中使用断言.与上述方法相比的一个缺点是,由于断言是通用的,因此我们失去了抛出自定义异常的能力.尽管通过传递对象来抛出每个断言调用仍然是可能的.
function credit(amount) {
assert(!isInt(amount), "Amount to credit is not an integer");
this.balance += amount;
}
Run Code Online (Sandbox Code Playgroud)
全局assert函数易于编写,使代码更短.
function assert(value, message) {
if(value …Run Code Online (Sandbox Code Playgroud) 在程序优化期间,尝试优化迭代遍历向量的循环,我发现以下事实::: std :: vector :: at()比operator []快得多!
在发布和调试版本(VS2008 x86)中,operator []比at()快5到10倍.
在网上读了一下让我意识到at()有边界检查.好的,但是,将操作放慢了10倍?!
有什么理由吗?我的意思是,边界检查是一个简单的数字比较,还是我错过了什么?
问题是这种性能受损的真正原因是什么?
更进一步,有没有办法让它更快?
我肯定会在其他代码部分(我已经有自定义边界检查!)中将所有at()调用与[]交换.
概念证明:
#define _WIN32_WINNT 0x0400
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <conio.h>
#include <vector>
#define ELEMENTS_IN_VECTOR 1000000
int main()
{
__int64 freq, start, end, diff_Result;
if(!::QueryPerformanceFrequency((LARGE_INTEGER*)&freq))
throw "Not supported!";
freq /= 1000000; // microseconds!
::std::vector<int> vec;
vec.reserve(ELEMENTS_IN_VECTOR);
for(int i = 0; i < ELEMENTS_IN_VECTOR; i++)
vec.push_back(i);
int xyz = 0;
printf("Press any key to start!");
_getch();
printf(" Running speed test..\n");
{ // at() …Run Code Online (Sandbox Code Playgroud) 我用基本的文本编辑器,记事本编辑了很多HTML页面.当我去验证它们时,验证服务正在说div这是一个未关闭的标签.我倾向于发现自动错误报告,例如这些报告往往不太可靠,即它们会给你一个行号和错误但通常错误实际上完全在文件的另一部分.
我只是想知道是否有任何免费的轻量级html编辑器具有查找标签的结束标签的功能.例如,你单击一个标签,然后单击一个快捷方式,程序将跳转到结束标签,我知道这个功能是在homesite,但我没有homesite,并且它有点笨重的程序.
或者甚至更好的任何可以突出显示未封闭标签的在线HTML验证服务?
总而言之,我想知道如何找到没有结束标签的html标签 - 是否有免费的html编辑器或简单的在线服务可以帮助解决这个问题?
我允许用户按下按钮,通过SoundPool播放声音.是否可以录制SoundPool正在播放的内容,以便用户可以录制一系列声音?
c++ ×2
python ×2
android ×1
assert ×1
audio ×1
binary ×1
c ×1
c# ×1
distutils ×1
getcwd ×1
getenv ×1
html ×1
iphone ×1
javascript ×1
macos ×1
makefile ×1
moq ×1
objective-c ×1
performance ×1
recording ×1
soundpool ×1
uitableview ×1
validation ×1
vector ×1
visual-c++ ×1