小编azy*_*oot的帖子

定义一个扩展PartialFunction的对象,直接用case实现

我对Scala很新,但我已经爱上了它.我已经阅读了有关部分功能的教程和文章.我想要实现的是让一个对象扩展PartialFunction [...,...]并直接用case定义它,而不需要定义isDefinedAt和apply方法.

例如

val partialfuncval : PartialFunction[Int,Boolean] = {
    case 1 => false
}
Run Code Online (Sandbox Code Playgroud)

是部分函数的有效定义.但为什么我不能写

object PartialFunctionClass extends PartialFunction[Int,Boolean] {
    case 1 => false
}
Run Code Online (Sandbox Code Playgroud)

?这将取消定义isDefinedAt和apply的需要,并且会使得编写某些类的类(由我正在使用的lib预定义)类型更容易.

scala partialfunction

5
推荐指数
1
解决办法
675
查看次数

编译gradle任务总是被执行

我有一个使用 minSDK 21 的 multidex 项目,使用 gradle 4.5.1 和 gradle 插件 3.0.1。我的问题是,即使没有任何源文件更改,当我尝试组装并部署到手机时,也会执行编译任务。当我运行时,--info我得到以下原因:

任务“:app:compileStandardDebugJavaWithJavac”不是最新的,因为:输入属性“源”文件C:... \ app \ build \ generated \ source \ buildConfig \ standard \ debug [package] \ BuildConfig.java已更改。输入属性“源”文件 C:...\app\build\ generated\source\dataBinding\standard\debug\android\databinding\layouts\DataBindingInfo.java 已更改。

您能帮助我确定什么可能导致这些文件发生更改并导致重新编译吗?我相信数据绑定源要么不应该在不更改源的情况下更改,要么不应该影响编译任务是否是最新的。BuildConfig.java 也是如此。

我有 gradle 缓存、按需配置并启用了守护进程。

这是该应用程序build.gradle

apply plugin: 'com.android.application'
apply plugin: 'io.fabric'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.2"

    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 25
        applicationId 'package'

        // for automated testing
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

        multiDexEnabled true

        vectorDrawables.useSupportLibrary = true

        buildConfigField "boolean", "PUBLIC_RELEASE", 'false'

    }

    dataBinding …
Run Code Online (Sandbox Code Playgroud)

android caching build gradle android-gradle-plugin

1
推荐指数
1
解决办法
923
查看次数