我在没有Prototype/jQuery的JavaScript中进行面向对象编程(我将jQuery用于其他东西).到目前为止,它一直运行良好,但我遇到了继承问题.基本上,当我在构造函数中声明对象时,它们在实例之间共享.以下是一些示例代码:
A = function()
{
this.y = new Array();
}
A.prototype.doStuff = function(n)
{
this.y.push(n);
}
B = function()
{
}
B.prototype = new A();
var b1 = new B();
var b2 = new B();
b1.doStuff(100);
b2.doStuff(200);
console.log("b1:");
console.log(b1);
console.log("b2:");
console.log(b2);
Run Code Online (Sandbox Code Playgroud)
此输出的阵列[100, 200]两者b1及b2.我想要的是b1和b2拥有自己的,独立的阵列来y.我该怎么做?
(PS.我认为Prototype的类系统内置了一些内容.但我宁愿不重写一堆我的代码来使用该类系统)
我有一个循环使用for(在someArray中的NSObject*obj){}语法.是否有一种简单的方法可以判断我是否在循环的最后一次迭代中(即不必使用[someArray count])
我正在关注boost :: spirit的快速入门指南,当我包含时,我收到此编译器警告:"此标头已弃用.请使用:boost/spirit/include/classic_core.hpp"我应该担心这个吗?
(快速入门指南:http://spirit.sourceforge.net/distrib/spirit_1_8_5/libs/spirit/doc/quick_start.html,与节目我试图编译这里的全部源:HTTP://spirit.sourceforge. net/distrib/spirit_1_8_5/libs/spirit/example/fundamental/number_list.cpp)
编辑:此外,当我尝试使用推荐的classic_core.hpp和classic_push_back_actor.hpp标头编译时,我得到以下编译器错误:
test7.cpp: In function 'bool parse_numbers(const char*, __gnu_debug_def::vector<double, std::allocator<double> >&)':
test7.cpp:18: error: 'real_p' was not declared in this scope
test7.cpp:18: error: 'push_back_a' was not declared in this scope
test7.cpp:23: error: 'space_p' was not declared in this scope
test7.cpp:23: error: 'parse' was not declared in this scope
Run Code Online (Sandbox Code Playgroud) 我试图在jQuery中设置一个回调,正确地将"this"绑定到调用对象.具体来说,这是我正在使用的代码.我在这样的对象中进行ajax调用:
Object.prototype.doAjaxCall = function(url)
{
$.get(url, null, this.handleAjaxResponse );
}
Run Code Online (Sandbox Code Playgroud)
但是,在Object.prototype.doAjaxCall,this并没有提到正确的事情.我之前使用过Prototype,我知道你需要在执行Ajax调用时绑定它,但我似乎无法在jQuery中找到正确的方法.有人能指出我正确的方向吗?
我认为这是一个愚蠢的问题,但我刚刚开始使用ANTLR.我将他们的教程中的"SimpleCalc"语法放在一起,并用C作为目标语言生成它.我得到SimpleCalcParser.c/.h和SimpleCalcLexer.c/.h作为输出,我能够编译这些并成功构建.但是现在,我如何实际使用生成的代码?我很难找到有用的文档中的任何内容.
下面是我的main()函数.这也来自教程.
#include "SimpleCalcLexer.h"
int main(int argc, char * argv[])
{
pANTLR3_INPUT_STREAM input;
pSimpleCalcLexer lex;
pANTLR3_COMMON_TOKEN_STREAM tokens;
pSimpleCalcParser parser;
input = antlr3AsciiFileStreamNew ((pANTLR3_UINT8)argv[1]);
lex = SimpleCalcLexerNew (input);
tokens = antlr3CommonTokenStreamSourceNew (ANTLR3_SIZE_HINT, TOKENSOURCE(lex));
parser = SimpleCalcParserNew (tokens);
parser ->expr(parser);
// Must manually clean up
//
parser ->free(parser);
tokens ->free(tokens);
lex ->free(lex);
input ->close(input);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编辑:根据第一个响应,我应该说我运行这样的程序:"./ testantlr test.txt",其中test.txt包含"4 + 1".没有输出.
从这里开始,我将如何访问生成的语法树中的"4",或打印出整个语法树?基本上,我如何访问ANTLR生成的语法树中的东西?
我试图在Template Toolkit .tt文件中调用外部Perl模块.我想要使用的模块是Util,我想打电话Util::prettify_date.我能够使用Template Toolkit的插件接口包含这个模块:我设置了load,new和error函数(如下所述:http://template-toolkit.org/docs/modules/Template/Plugin.html),并使用它包括它[% USE Util %].
这工作正常,但我想知道是否有一种方法可以USE在Template Toolkit中使用Perl模块而无需插件 - 如果它们.制作插件的主要问题是我必须使用Util面向对象的所有函数(即接受$ self作为第一个参数),这实际上没有意义.
我正处于为mISV创建软件的初期阶段.该程序是一个桌面应用程序,从长远来看,我想拥有Windows和OS X的本机版本(我查看了各种跨平台的API,但没有一个满足我的需求).但最初,我认为一次开发两个平台并不合理.考虑到这一点,我一直在寻找Windows的WPF和OS X的Cocoa,它们看起来很相似.
有没有人有经验将一个移植到另一个?是否有特定的技术/范例可以使移植更容易?忽略业务考虑因素,您会建议先在其中一个上进行开发吗?
我有一个我在界面构建器中定义的NSWindow.我希望这样做,以便当用户单击按钮时,它会打开NSWindow的新实例.我必须继承NSWindow或其他东西吗?
%a是“远程IP地址”,%h是“远程主机”,但是当我对其进行测试时,它们都打印出相同的IP地址。有什么不同?
日志格式“%a%h的示例日志输出:
192.168.1.2 192.168.1.2
192.168.1.2 192.168.1.2
192.168.1.2 192.168.1.2
Run Code Online (Sandbox Code Playgroud) 如何仅BLOCK在模板中呈现特定内容?
假设我有这样BLOCK的text.tt,一个模板工具包文件:
[% BLOCK someblock %] some block test blah blah blah [% END %]
Run Code Online (Sandbox Code Playgroud)
我希望能够process()用来处理那部分:
$tt->process("text.tt/someblock", {...}, {...});
Run Code Online (Sandbox Code Playgroud)
这是处理这个问题的正确方法吗?
这是一个指向好文档/好文章的请求.我正在寻找有关Apache服务器可以合理处理多少连接的信息,以及可能如何在多个服务器之间进行负载平衡的信息.我已经完成了谷歌搜索,但初学者更难判断什么是优秀的文档.
如果我mmap用来编写uint32_t,我会遇到大端/小端约定的问题吗?特别是,如果我mmap在大端机器上编写一些数据,当我尝试在小端机器上读取数据时会遇到问题吗?
我有一个大纲视图委托,并覆盖outlineView:dataCellForTableColumn:item:使我的大纲视图中的单元格成为按钮(请参阅此问题).这是我的代表的代码形式:
- (NSCell *)outlineView:(NSOutlineView *)outlineView dataCellForTableColumn:(NSTableColumn *)tableColumn item:(id)item;
{
MyCell * myCell = [[MyCell alloc] init];
// return nil;
return myCell;
}
Run Code Online (Sandbox Code Playgroud)
这样做有一个奇怪的副作用.在我的大纲视图的数据源中,方法outlineView:objectValueForTableColumn:byItem:始终为tableColumn获取空值.
代码是:
- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item
{
printf("tableColumn:%s\ttable identifier: %s\n", [[tableColumn className] cString], [[tableColumn identifier] cString]);
return [item valueForKey:[tableColumn identifier]];
}
Run Code Online (Sandbox Code Playgroud)
输出是:
tableColumn:(null) table identifier: (null)
Run Code Online (Sandbox Code Playgroud)
奇怪的是,只有在我实现outlineView:dataCellForTableColumn:item:方法时才会发生这种情况.我在这里错过了什么?
编辑:
像这样修改委托函数似乎可以解决问题:
- (NSCell *)outlineView:(NSOutlineView *)outlineView dataCellForTableColumn:(NSTableColumn *)tableColumn item:(id)item;
{
printf("delegate column identifier: %s\n", [[tableColumn identifier] cStringUsingEncoding:NSASCIIStringEncoding]);
if (tableColumn == nil)
{
return nil;
}
MyCell * …Run Code Online (Sandbox Code Playgroud) cocoa ×3
apache ×2
perl ×2
ajax ×1
antlr ×1
boost ×1
boost-spirit ×1
c ×1
c++ ×1
endianness ×1
inheritance ×1
javascript ×1
jquery ×1
mmap ×1
objective-c ×1
performance ×1
porting ×1
webserver ×1
wpf ×1