Swift - 在声明变量之前所有函数在页面加载时运行时,如何从不同函数中更新变量

问题描述

当我希望从函数内部更新变量 total函数必须在页面加载时运行时,我应该在哪里声明变量 override func viewDidLoad() { super.viewDidLoad() self.functionOne() self.functionTwo() self.printTotal() } var total = 0 func functionOne(){ total += 1 } func functionTwo(){ total += 1 } func printTotal(){ print(total) }

看看下面的代码

viewDidLoad()

显然,我现在无法声明变量所在的位置,因为此时函数已经运行,总数将重新设置为 0。

我也无法在函数内部移动变量声明,因为这会改变作用域并且其他函数无法再访问。

此外,我无法在其他函数页面加载时运行之前声明该变量,因为 from kivy.clock import Clock from kivy.lang import Builder from kivymd.app import MDApp from kivymd.uix.menu import MDDropdownMenu KV = ''' Screen MDTextField: id: field pos_hint: {'center_x': .5,'center_y': .5} size_hint_x: None width: "200dp" hint_text: "Material" on_focus: if self.focus: app.menu.open() ''' class Test(MDApp): def __init__(self,**kwargs): super().__init__(**kwargs) self.screen = Builder.load_string(KV) items = ['PVC','XLPE'] menu_items = [{"text": f"{i}"} for i in items] self.menu = MDDropdownMenu( caller=self.screen.ids.field,items=menu_items,position="bottom",width_mult=3,) self.menu.bind(on_release=self.set_item) def set_item(self,instance_menu,instance_menu_item): def set_item(interval): self.screen.ids.field.text = instance_menu_item.text instance_menu.dismiss() Clock.schedule_once(set_item,0.5) def build(self): return self.screen test().run() 本身就是一个函数,因此我无法从外部访问该变量。

这些功能也必须在页面加载时运行,我无法更改。

注意:我不只是想在这里将两个数字加在一起,我知道有更简单的方法可以做到这一点。这只是我试图克服的问题的一个过于简单化的例子。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)