我有一个普通的宏:
#define mSwitch( Root, Case ) Root##_Case_##Case
#define mSpecialDisplay( what, Val ) mSwitch(mSpecialDisplay,what)(Val)
#define mSpecialDisplay_Case_Int(Val) ...do stuff
#define mSpecialDisplay_Case_Float(Val) ...do stuff
...more special cases
Run Code Online (Sandbox Code Playgroud)
如何保证变量Case在粘贴之前完全展开mSwitch?
如果mSwitch传递一个文字值,它工作正常,但如果有多个间接层或中间操作,mSwitch最终会在完全展开之前粘贴其中一个.
我正在使用MSVC 2005.
有没有一种简单的方法可以确保参数在粘贴完成之前完全展开?
谢谢
好吧,举一个例子可能并不难:
#define mMDebugInfo( ... ) mMDebugExp( mMDebugInfo_( 0, __VA_ARGS__ ) )
#define mMDebugInfo_( C, ... ) mMAritize( mMSwitch( mMDebugInfo, mMMetaTrait( Detect, __VA_ARGS__ ) ), (C, __VA_ARGS__) )
#define mMDebugInfoRep( C, ... ) mMXP##C( mMDebugInfo_ )mMXP##C((mMIInc(C),__VA_ARGS__)) //(mMExpDo(mMGlue( mM, C)##DebugInfo_(mMIInc(C),__VA_ARGS__))
#define mMDebugInfo1( C, ... …Run Code Online (Sandbox Code Playgroud) 如果我能得到类似下面的内容,那就太棒了.
伪代码:
U = widget1.SettingsGet()
Print U
Run Code Online (Sandbox Code Playgroud)
打印时,会返回以下内容:
widget1(background='green',foreground='grey',boarderwidth=10, relief='flat')
Run Code Online (Sandbox Code Playgroud)
能够获得小部件设置真的很有用.这样我就可以相应地操纵其他小部件.
我很难理解这一点.基本上,此Lookup API用于保持松散耦合的模块间性质.那么基本上服务提供者和消费者模块可以使用Lookup API相互通信吗?
但我不明白的是:
Lookup就像一个装满那个类的对象的包?有人可以给出一个更简单的类比吗?
那么创建依赖关系,并在服务使用者中实现LookupListener是否正确?消费者显然依赖提供者.
那么LookupListener的实现是什么监听的?这是自己的Lookup?那么如果有另一个模块的类的映射,它将作为一个对象存储在Lookup的Lookup实现LookupListener中?
所以查找有点像一个包,可以存储另一个模块的类和它的方法?
这是确定选择的正确过程吗?
associateLookup(Lookups.singleton(fff));再次,与这条线混淆:associateLookup()究竟在做什么?result = Utilities.actionsGlobalContext().lookupResult(Browser1.class);这条线在做什么?结果是什么?它是否包含Browser1类(来自其他模块)?result.addLookupListener (this); 为什么要为结果添加监听器?我们在TopComponent上正在倾听什么以及为什么?
做完了?
最后,为了进一步让我感到困惑,Node API如何进入pla7y?
我有两个固定的hight div,每个div包含一个相互连接的可排序列表.有没有办法隐藏溢出,同时仍然连接列表?例如,如果将溢出设置为隐藏,那么当它被拖到div之外时,li不会显示.
我知道一个可能的解决方案是计算div可以包含的最大li数,并根据可见元素的数量动态添加/删除元素,但我想知道是否有更好的解决方案?
有什么区别
mymodel=model.objects.get(name='pol')
Run Code Online (Sandbox Code Playgroud)
和
mymodel=model.objects.filter(name='pol')
Run Code Online (Sandbox Code Playgroud) 嗨,我正在使用UITableView来显示列表.我已对其进行了自定义并在单元格中添加了4个UILabel,但是当选择该行时,行选择颜色(自定义为绿色)和标签文本颜色(也为绿色)保持不变.因此,很难看到细胞的文本.我想在选择行时将标签的颜色更改为白色,否则为绿色.
谁能帮我吗?
谢谢,
出于效率原因,我总是避免编写这样的循环:
for(std::size_t i = 0; i < vec.size(); ++i) { ... }
Run Code Online (Sandbox Code Playgroud)
哪里vec是STL容器.相反,我要么
const std::size_t vec_size = vec.size();
for(std::size_t i = 0; i < vec_size; ++i) { ... }
Run Code Online (Sandbox Code Playgroud)
或使用容器迭代器.
但第一个解决方案真的有多糟糕?我记得在Meyers中读到它将是二次而不是线性的,因为矢量不知道它的大小而且必须反复计算.但现代编译器不会检测到这种情况并将其优化掉吗?
我知道有关Objective-C类别的一些规则:
- 类别方法不应覆盖现有方法(类或实例)
- 对同一个类实现相同方法的两个不同类别将导致未定义的行为
我想知道当我覆盖同一类别中我自己的一个类别方法时会发生什么.例如:
@interface NSView (MyExtensions)
- (void)foo; // NSView category implementation
@end
@interface MyClass : NSView
{ }
@end
@interface MyClass (MyExtensions)
- (void)foo; // MyClass category implementation
@end
Run Code Online (Sandbox Code Playgroud)
定义了这些接口后,当我运行以下代码时将执行哪个方法?
MyClass * instance = [[MyClass alloc] initWith...];
[instance foo];
[instance release];
Run Code Online (Sandbox Code Playgroud)
注意:使用我的编译器,MyClass实现优先,但我不确定是否可以保证发生,或者只是一种特定的未定义行为.
c++ ×2
python ×2
tkinter ×2
c ×1
categories ×1
cocoa ×1
css ×1
django ×1
get ×1
inheritance ×1
iphone ×1
java ×1
javascript ×1
jquery ×1
jquery-ui ×1
loops ×1
macros ×1
methods ×1
netbeans ×1
objective-c ×1
optimization ×1
settings ×1
stl ×1
text ×1
tooltip ×1
uitableview ×1
widget ×1