在Java中,我们有Class::new构造函数引用的语法.我知道,方法有可调用的引用,但构造函数如何?我的一个典型用例是工厂.
假设我有一个class Foo(val a: String, val b: Int, val c: Date),我想Foo根据所有三个属性对s 列表进行排序.我该怎么做?
LiveData在某些情况下,new 可以用作RxJava可观察对象的替代品.但是,与之不同的是Observable,LiveData没有错误回调.
我的问题是:我应该如何处理错误LiveData,例如,当某些网络资源由于某个网络资源而无法检索时IOException?
我在我的一个项目中使用RxJava,我使用Android Studio插件将我的一个类转换为Kotlin,并在一个map flatMaplambda(java中的Func1)中,中间件返回如下所示@Func1.
我不知道这是什么意思.
something.flatMap(Func1<ArticleCriteria, Observable<Pair<String, String>>> {
val isTemporaryClone = it.isATemporaryClone
val isTheOriginalToken = it.tokenIsOriginalHere
if (isTemporaryClone) {
if (!isTheOriginalToken) {
return@Func1 paramsError("Token is always original for temp articles")
}
return@Func1 mJobRunner.doNotRun(DeleteArticleJob.TAG)
.doOnNext(deletePersonalActionById(articleId))
}
runArticleJobAsync(DeleteArticleJob.TAG, it)
})
Run Code Online (Sandbox Code Playgroud) 当使用ViewPager?时,是否有可能同时显示两个页面?我不是在寻找边缘效果,而是在寻找两个完整的页面.
提前致谢.
我有一个appsettings.json文件,如下所示:
{
"someSetting": {
"subSettings": [
"one",
"two",
"three"
]
}
}
Run Code Online (Sandbox Code Playgroud)
当我构建我的配置根,并做类似的config["someSetting:subSettings"]事情返回null并且可用的实际设置是这样的:
config["someSettings:subSettings:0"]
有没有更好的方法来检索someSettings:subSettings列表的内容?
在Java 8中,我们可以引用Class实例的方法.这是一个例子
Function1<Integer, Object> ref = a::getItem;
Run Code Online (Sandbox Code Playgroud)
a是Adapter具有该方法的类的实例Object getItem(int i).
我们可以在Kotlin做同样的事吗?我尝试了相同的语法但没有成功.到目前为止,我只能创建一个扩展方法引用,如下所示:
val ref: Adapter.(Int) -> Any = Adapter::getItem
Run Code Online (Sandbox Code Playgroud)
但是在这里我仍然需要一个实例Adapter来调用它.我看到的另一个变化是定义一个像这样的lambda:
val ref: (Int) -> Any = { a.getItem(it) }
Run Code Online (Sandbox Code Playgroud) 我想从Kotlin代码调用外部命令.在C/Perl中,我会使用system()函数; 在Python中,我会使用子进程模块; 在Go中,我会使用os/exec; 等等.但是,我怎么在Kotlin这样做呢?
我刚开始使用Kotlin试用Android应用.我只想继承这样的Application类:
class SomeApp : Application {
}
Run Code Online (Sandbox Code Playgroud)
但是编译器提出了警告:
并建议将其更改为:
class SomeApp : Application() {
override fun onCreate() {
super.onCreate()
}
}
Run Code Online (Sandbox Code Playgroud)
我在文档中读到了主要和辅助构造函数.所以如果超类有一个主构造函数,那么有必要在这里写吗?像Application类有自己的构造函数
public Application() {
super(null);
}
Run Code Online (Sandbox Code Playgroud)
然后有必要有派生的主要构造函数?或者我不能像Java那样做:
class SomeApp : Application {
constructor SomeApp(){
super();
}
}
Run Code Online (Sandbox Code Playgroud)
或者这个错误暗示了其他什么?任何人都可以详细解释我吗?我对这门语言很陌生,这对我来说很奇怪.
编辑:在java中我可以执行以下操作: class SomeApp extends Application{ }
它有隐式构造,所以我没有写:class SomeApp extends Application{ public Application(){ super(); } }但在科特林我必须定义像下面空的构造:
class SomeApp:Application(){ }
?
不得不问一些看似简单的事情,我觉得自己像个白痴,但我正试图弄清楚如何在 VueJS 中使用“枚举”。目前,在一个名为LandingPage.js我的文件中,有这么一段代码:
const Form = {
LOGIN: 0,
SIGN_UP: 1,
FORGOT_PASSWORD: 2,
};
function main() {
new Vue({
el: "#landing-page",
components: {
LoginForm,
WhoIsBehindSection,
WhatIsSection,
Form,
},
data () {
return {
form: Form.LOGIN,
};
},
template: `
<div>
<LoginForm v-if="form === Form.LOGIN"></LoginForm>
<WhatIsSection></WhatIsSection>
<WhoIsBehindSection></WhoIsBehindSection>
</div>
`
});
}
Run Code Online (Sandbox Code Playgroud)
这是v-if="form === Form.LOGIN"错误消息失败的条件:
属性或方法“Form”未在实例上定义,而是在渲染期间引用。通过初始化属性,确保此属性是反应性的,无论是在数据选项中,还是对于基于类的组件。
无法读取未定义的属性“登录”
只是让你们知道没有条件一切都在工作,如果我把这个位放在模板中
<p>{{ form }}</p>
Run Code Online (Sandbox Code Playgroud)
它将打印0在屏幕上。虽然,把它放在模板中
<p>{{ Form.LOGIN }}</p>
Run Code Online (Sandbox Code Playgroud)
不会导致它打印0在屏幕上。所以我终其一生都无法弄清楚为什么它不会接受Form.LOGIN。
答案
我确实将它添加到components,但我从未想过将它添加到data. …
kotlin ×6
android ×4
.net-core ×1
android-architecture-components ×1
asp.net-core ×1
c# ×1
comparable ×1
constructor ×1
exec ×1
javascript ×1
lambda ×1
rx-java ×1
vue.js ×1