好吧,使用变量名称的"m"前缀在编程中变得很常见,主要是在Android中,但是自从Kotlin到来之后,这个小问题让我感到困扰.在父类中没有什么新东西,但是从另一个类设置和获取变量似乎不太舒服,因为在Java中我们创建(和命名)我们的setter和getter,所以我们可以省略"m",什么不发生在Kotlin,除非我们走向惯例的反面并重复Java的技术.
Java的:
public class Foo {
private String mName;
public void setName(String name) {
mName = name;
}
public String getName() {
return mName;
}
}
public class Main {
public static void main(String[] args) {
Foo foo = new Foo();
foo.setName("Foo");
}
}
Run Code Online (Sandbox Code Playgroud)
科特林:
data class Foo(val mName: String)
fun main(args: Array<String>) {
val foo = Foo()
foo.mName = "Foo" // "m" prefix doesn't fit
}
Run Code Online (Sandbox Code Playgroud)
你是怎么在这种情况下表现的?是否有新的公约要遵循?
假设我有一个根据平台表现不同的小部件:
RaisedButton.CupertinoButton.例子:
@override
Widget build(BuildContext context) {
if (Platform.isAndroid)
return buildRaisedButton();
else if (Platform.isIOS)
return buildCupertinoButton();
else
throw UnsupportedError('Only Android and iOS are supported.');
}
Run Code Online (Sandbox Code Playgroud)
在我的小部件测试中,我希望能够测试这两种情况,但是由于Platform的 getter 是静态的,我不能存根它们。
关于如何实现这一目标的任何想法?
关于连接外部应用程序的Cloud SQL 文档对我帮助不大。是不是有一些库来处理数据流量,比如 Firebase 的 Cloud Firestore 和实时数据库产品?
我有一个订阅了 Pub/Sub 主题的云函数。
根据docs,如果 Cloud Function 返回非成功响应,它将重新发送消息:
端点通过返回 HTTP 成功状态代码来确认消息。不成功的响应表示应该重新发送消息。
我的问题是:如果响应不成功,消息将被立即重新发送还是 Pub/Sub 将遵守确认截止日期重新发送消息?
我认为这个问题没有意义,我将解释原因。
由于您无法访问ResponsePub/Sub 函数中的对象,因此无法直接发送响应代码(我对此不确定,所以如果我错了,请纠正我)。
因此,非成功响应只能由以下原因引起:
超时,这是基于确认截止日期,因此在这种情况下,确认截止日期显然将受到尊重。
Cloud Function 中的一个错误,正如Andrei Cusnir所说,默认情况下 Pub/Sub 甚至不会重试,所以关心确认截止日期是没有意义的。
我在Kotlin的匿名类内部创建Intent时遇到麻烦。我想在kotlin中重现以下代码:
ModuleDAO.INSTANCE.refresh(new AnswerListener() {
@Override
public void onAnswerRetrieved() {
final Intent intent = new Intent(SplashScreenActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
@Override
public void onError(int error) {
// doesn't matter
}
});
Run Code Online (Sandbox Code Playgroud)
我试过但不起作用的方法:
ModuleDAO.refresh(object : AnswerListener {
override fun onAnswerRetrieved() {
val intent = Intent(SplashScreenActivity::act, MainActivity::class.java)
startActivity(intent)
}
override fun onError(error: Int) {
// doesn't matter
}
})
Run Code Online (Sandbox Code Playgroud)