在function last_column() {
var sheet = SpreadsheetApp.getActiveSheet();
var values = [];
values = sheet.getRange("A1:1").getValues();
// getValues() returns a multi-dimensional array, so syntax
// for the entire row is values[0]
for (var i = 0; i < values[0].length; i++) {
if (values[0][i] === "") {
Logger.log("found empty column: %s",i+1);
break;
}
}
return i+1;
}
类中声明一个协程范围而不是使用Globascope是一种好习惯吗?
App
在这里,我定义了一个变量class App : Application() {
val applicationJob = Job()
companion object {
lateinit var instance: App
private set
lateinit var appDefaultScope: CoroutineScope
}
override fun onCreate() {
super.onCreate()
instance = this@App
appDefaultScope = CoroutineScope(Dispatchers.Default + applicationJob)
}
}
,并在应用程序的appDefaultScope
中对其进行了初始化
所以在我的代码中的任何地方我都可以做:
onCreate
我看到的与GlobalScope的主要区别在于,在这里我可以随时取消作业并关闭所有可能卡住的协程。
有更好的替代方法吗?
原因是我有一些App.appDefaultScope.launch {
// some operations
}
函数,它们使用协程并且未从活动中调用(因此我无法为它们提供活动内部定义的范围),但需要它们的操作范围。
这种对象函数的一个示例是在本地数据库中写的日志,该日志几乎可以在App中的任何地方调用。