在Kivy语言中,可以使用类似的东西来引用根小部件
<RootWidget>:
BoxLayout:
SomeButton:
on_press: print root
Run Code Online (Sandbox Code Playgroud)
但尝试从Python访问root是不可能的
class SomeButton(Button):
def __init__(self, **kwargs):
super(SomeButton, self).__init__(**kwargs)
self.text = "Button"
self.font_size = 15
def on_press(self, *args):
print root
Run Code Online (Sandbox Code Playgroud)
并将导致
NameError: global name 'root' is not defined
Run Code Online (Sandbox Code Playgroud)
或者如果使用self.root,
AttributeError: 'SomeButton' object has no attribute 'root'
Run Code Online (Sandbox Code Playgroud) 在 C99 中,如果在声明之前调用函数,编译器将发出警告。例如,这将导致警告:
int sum(const int k) {
return accsum(k, 0);
}
int accsum(const int k, const int acc) {
if (k == 0) {
return acc;
} else {
return accsum(k-1, k + acc);
}
}
int main() {
int x = sum(3);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我在谷歌搜索后看到的答案是需要声明,以便编译器可以检查参数类型以避免错误。但是,当从 sum 内部调用 accsum 时,为什么编译器不能在执行 accsum 之前先找到 accsum 的函数定义呢?
在Android Studio中,当我输入新代码时,我总是在文件的底部.这意味着当我输入时,我总是盯着屏幕的底部,这真的很烦人.有没有办法配置Android Studio滚动文件的底部,所以最后一行可以在屏幕的中心?有一个关于Eclipse的同一主题的问题在这里,这个问题的答案是否定的.只是想知道这是否可以在Android Studio中使用?我目前只是在编码之前在我创建的每个文件的末尾键入~50个新行,但这只是非常不优雅.
为什么这在C中是非法的?将p重新初始化为不同的位置有什么问题?通过单独更改字段值可以实现相同的效果,因此我不明白为什么不能在p = {1,2}的一个步骤中完成.
struct posn {
int x;
int y;
};
int main() {
struct posn p = {3, 4};
p = {1, 2}; //Causes error
// must do p.x = 1; p.y = 2;
return 0;
}
Run Code Online (Sandbox Code Playgroud)