我正在使用 Jupyter 小部件编写一个界面,用户在其中配置一堆设置,然后单击“运行”按钮。单击后,此按钮将调用另一个模块中实现的函数。该函数需要一些时间才能运行,因此我使用该包向其添加了一个进度条tqdm。不幸的是,当我单击“运行”时,此进度条现在显示在另一个终端中,而不是在单元格的输出中。有没有办法让条形图显示在同一单元格输出中?
我想做这样的事情:
typedef int(A::*f_ptr)(int);
class A
{
int f1(int a){ /*do something*/ }
int f2(int a){ /*do something else*/ }
f_ptr pick_f(int i)
{
if(i)
return this->f1;
return this->f2;
}
}
Run Code Online (Sandbox Code Playgroud)
原因是我希望类 A 的实例保存某些有用的变量,然后根据用户输入只选择我需要的成员函数。但这不起作用,因为我得到“指向绑定函数的指针只能用于调用该函数”。如何编写返回指向非静态成员函数的指针的函数?
每个 Google 搜索都将它们解释为“变量的名称”,但我感觉标识符和标识符的名称之间存在区别。标识符是否更像是具有名称、范围、链接和底层对象等属性的对象?我问这个是因为我在尝试阅读 C 标准时遇到了一些麻烦。例如,片段
int main(){
int x;
extern int x;
}
Run Code Online (Sandbox Code Playgroud)
编译失败而
int main(){
int x;
if(1){extern int x;}
}
Run Code Online (Sandbox Code Playgroud)
编译成功。在这个问题中,第一个片段的失败是从 C 标准中的 6.2.2.6 解释的,它指出局部变量没有链接。然而,在第二个片段中,局部变量仍然没有链接,但没有冲突。现在,6.2.2.4 状态
对于在该标识符的先前声明可见的范围内使用存储类说明符 extern 声明的标识符,如果先前声明指定内部或外部链接,则后面声明中标识符的链接与链接相同在事先声明中指定。如果没有可见的先前声明,或者如果先前声明没有指定链接,则标识符具有外部链接。
我的解释是这个规则在两个片段中都有效,但在第一个片段中,底层对象的唯一性x通过 6.2.1.2 触发了约束违规,因为相同的标识符名称用于两个不同的对象,相同的范围和名称空间。但这不是我之前链接的问题的答案中给出的解释。在第二个片段中,链接类型仍然存在冲突,那么更改extern声明的范围是否会更改本地声明的可见性?从 C 标准的抽象角度考虑链接的最佳方法是什么(不使用 gcc 或 clang 等实际实现作为说明)?
c ×1
c++ ×1
compilation ×1
ipywidgets ×1
jupyter-lab ×1
linkage ×1
pointers ×1
python ×1
tqdm ×1