Tag: 嵌套的

为什么在generics类中重复嵌套types的字段声明会导致巨大的源代码增加?

场景是非常罕见的,但很简单:您定义了一个generics类,然后创build一个嵌套类,它从外部类inheritance,并在嵌套内定义一个关联字段(自我types)。 代码片段比描述更简单: class Outer<T> { class Inner : Outer<Inner> { Inner field; } } IL反编译后,C#代码如下所示: internal class Outer<T> { private class Inner : Outer<Outer<T>.Inner> { private Outer<Outer<T>.Inner>.Inner field; } } 这似乎是公平的,但是当你改变字段的types声明时,事情变得更加棘手。 所以当我更改字段声明 Inner.Inner field; 反编译之后,这个字段将如下所示: private Outer<Outer<Outer<T>.Inner>.Inner>.Inner field; 我明白,这个阶级的“嵌套”和inheritance不太相称,但是我们为什么要观察这样的行为呢? Inner.Inner types声明已经改变了types? Inner.Inner 和 Inner types在这种情况下有所不同? 当事情变得非常棘手 您可以在下面看到反编译的源代码 。 它真的很大,总共有12159个符号。 class X<A, B, C> { class […]

SQLite查询中的CASE语句

为什么这个查询不起作用? :(我尝试replace嵌套的IF语句“… SET lkey = IF(lkey> = 11,lkey – 5,IF(lkey> 5,lkey + 2,lkey))” UPDATE pages SET lkey = CASE lkey WHEN lkey >= 11 THEN lkey – 5 ELSE CASE lkey WHEN lkey > 5 THEN lkey + 2 ELSE lkey END END, rkey = CASE lkey WHEN lkey >= 11 THEN rkey – 5 […]

Ruby在嵌套函数中访问外部variables

我确信这个问题有一个简单的答案。 我似乎无法find它。 我在Ruby中做了一个嵌套的函数,并且在内部函数中从外部函数访问variables时遇到了问题: def foo(x) def bar puts x end bar 42 end foo(5) 我得到: NameError: undefined local variable or method x'为主:对象 类似的Python代码工作: def foo(x): def bar(): print x bar() return 42 foo(5) 那么我如何在Ruby中做同样的事情呢?

从Javascript中的嵌套函数返回值

我有一个function,设置如下 function mainFunction() { function subFunction() { var str = "foo"; return str; } } var test = mainFunction(); alert(test); 根据我的逻辑,这个警报应该返回'foo',而是返回undefined。 我究竟做错了什么? 更新 :这里是我的实际代码(这是一个用Google API进行反向地理编码的function) function reverseGeocode(latitude,longitude){ var address = ""; var country = ""; var countrycode = ""; var locality = ""; var geocoder = new GClientGeocoder(); var latlng = new GLatLng(latitude, longitude); return […]

为什么我不能在Java的内部类中创build一个枚举?

我试图做的是这样的: public class History { public class State { public enum StateType { Eclipse在StateType上给我这个编译错误: The member enum StateType must be defined inside a static member type 。 当我使State类为静态时,错误消失。 我可以使State静态,但我不明白为什么我不能在内部类中声明一个enum 。

在python中从内部类访问外部类

我有这样的情况 class Outer(object): def some_method(self): # do something class Inner(object): def __init__(self): self.Outer.some_method() # <– this is the line in question 我如何从Inner类访问Outer类的方法? 编辑 – 感谢您的答复。 我得出结论,我需要重新评估我是如何devise这个实现的,并提出一个更强大的方法。

PHP中的嵌套或内部类

我正在为我的新网站构build一个用户类 ,但是这次我正在考虑将它构build得有点不同。 我知道C ++ , Java甚至是Ruby (可能还有其他的编程语言)允许在主类中嵌套/内部的类,这使得代码更加面向对象和组织。 在PHP中,我想要这样做: <?php public class User { public $userid; public $username; private $password; public class UserProfile { // Some code here } private class UserHistory { // Some code here } } ?> 在PHP中可能吗? 我怎样才能做到这一点? UPDATE 如果不可能,未来的PHP版本可能会支持嵌套类吗?

枚举types的命名空间 – 最佳实践

通常需要几个枚举types。 有时候,有一个名字冲突。 想到这两个解决scheme:使用一个名称空间,或使用“更大的”枚举元素名称。 尽pipe如此,命名空间解决scheme有两个可能的实现:一个嵌套枚举的虚拟类,或者一个完整的命名空间。 我正在寻找所有三种方法的优点和缺点。 例: // oft seen hand-crafted name clash solution enum eColors { cRed, cColorBlue, cGreen, cYellow, cColorsEnd }; enum eFeelings { cAngry, cFeelingBlue, cHappy, cFeelingsEnd }; void setPenColor( const eColors c ) { switch (c) { default: assert(false); break; case cRed: //… break; case cColorBlue: //… //… } } // (ab)using […]

依赖范围的嵌套模板

什么是依赖范围,在下面的错误的上下文中typename是什么意思? $ make g++ -std=gnu++0x main.cpp main.cpp:18:10: error: need 'typename' before 'ptrModel<std::vector<Data> >::Type' because 'ptrModel<std::vector<Data> >' is a dependent scope make: *** [all] Error 1 /* * main.cpp */ #include <vector> #include <memory> template<typename T> struct ptrModel { typedef std::unique_ptr<T> Type; }; template<typename Data> struct ptrType { typedef ptrModel< std::vector<Data> >::Type Type; }; int main() […]

在C中嵌套strtok函数问题

我有这样的string: a;b;c;d;e f;g;h;i;j 1;2;3;4;5 我想分析它的元素。 我使用嵌套的strtok函数,但它只是分割第一行,并使空指令指针。 我怎么能克服这个? 这里是代码: token = strtok(str, "\n"); while(token != NULL && *token != EOF) { char a[128], b[128]; strcpy(a,token); strcpy(b,a); printf("a:%s\n",a); char *token2 = strtok(a,";"); while(token2 != NULL) { printf("token2 %s\n",token2); token2 = strtok(NULL,";"); } strcpy(token,b); token = strtok(NULL, "\n"); if(token == NULL) { printf("its null"); } } 输出: token […]