Java开发人员迁移到Scala时最常犯的错误是什么?
错误是指编写不符合Scala精神的代码,例如在类似地图的函数更合适时使用循环,过多使用异常等。
编辑:另一种方法是使用自己的getter / setter方法,而不是由Scala友好地生成的方法
一个明显的例子是不利用scala允许的嵌套作用域,以及延迟副作用(或意识到scala中的所有内容都是表达式):
public InputStream foo(int i) {
final String s = String.valueOf(i);
boolean b = s.length() > 3;
File dir;
if (b) {
dir = new File("C:/tmp");
} else {
dir = new File("/tmp");
}
if (!dir.exists()) dir.mkdirs();
return new FileInputStream(new File(dir, "hello.txt"));
}
可以转换为:
def foo(i : Int) : InputStream = {
val s = i.toString
val b = s.length > 3
val dir =
if (b) {
new File("C:/tmp")
} else {
new File("/tmp")
}
if (!dir.exists) dir.mkdirs()
new FileInputStream(new File(dir, "hello.txt"))
}
但这可以在很多方面得到改善。它可能是:
def foo(i : Int) = {
def dir = {
def ensuring(d : File) = { if (!d.exists) require(d.mkdirs); d }
def b = {
def s = i.toString
s.length > 3
}
ensuring(new File(if (b) "C:/tmp" else "/tmp"));
}
new FileInputStream(dir, "hello.txt")
}
后一个示例不会“导出”超出所需范围的任何变量。事实上,它不声明任何变量 在所有 。这意味着以后更容易重构。当然,这种方法 的确
导致了类文件的巨大膨胀!
问题内容: 我正在将Java代码库迁移到纯Scala,并且只能使用这一段代码。我有一个IntervalMap的实现,即一个数据结构,可让您有效地将范围映射到,和操作全部所在的位置(与IntervalTree或SegmentTree略有不同)。 这段代码使用Java,并且在迁移到Scala时遇到了两个大问题: Scala没有-我决定使用(奇怪的Scala有但没有)存储密钥并将值存储在辅助中来解决它。
我有一个Java类(),它使用内部构建器类(),作为构建的一部分访问私有变量,如下所示: 使用方法如下: 我试图利用Android Studio将Java代码迁移到Kotlin的能力,这给了我以下结果: 但是,编译失败,出现以下情况: 因为(如静态编程语言留档所述): 在Kotlin中,外部类看不到内部类的私有成员。 此代码在块中运行,其中: 我知道我可以对其进行重构,以避免尝试这种访问(更改外部
本文向大家介绍迁移学习相关面试题,主要包含被问及迁移学习时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 迁移学习就是把之前训练好的模型直接拿来用,可以充分利用之前数据信息,而且能够避免自己实验数据量较小等问题。简单来讲就是给模型做初始化,初始化的数据来自于训练好的模型。
迁移学习(Transfer learning)顾名思义就是就是把已学训练好的模型参数迁移到新的模型来帮助新模型训练数据集。 经典论文: Progressive Neural Networks
我在scala项目中使用Flyway版本5.2.4,并且我的所有迁移脚本都在src/main/Resources/db/迁移下,具有以下文件夹结构 位置设置为db.migrations(没有任何前缀。Flyway留档表示如果不使用前缀,则支持sql/java迁移) V1和V2似乎没有问题。但是V3被忽略了。我尝试添加V3\uu java\u迁移。java也一样,它没有什么不同。是否有人有幸添加了非
Angular 是使用 TypeScript 构建的,并且支持向 Angular 提供元信息的装饰器。 TypeScript 的装饰器会让语法感觉更加“自然”,尽管有可能使用 Angular 没有的功能。