作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用 App
的应用程序trait,而且一切正常。但是object
继承自 App
变得有点笨拙,所以我想将一些功能拆分为特征。特别是,我想拆分命令行参数处理。
不幸的是,这似乎不适用于 DelayedInit
.所以这很好用:
object Main extends App {
println("arguments are: "+ args.mkString.mkString(", "))
}
NullPointerException
:
trait CommandLineArguments { this: App =>
println("arguments are: "+ args.mkString.mkString(", "))
}
object Main extends App with CommandLineArguments
DelayedInit
“包括”混合特征?
最佳答案
看起来很奇怪,如果像这样写一些,效果很好:
trait CommandLineArguments { self: App =>
delayedInit {
println("arguments are: "+ args.mkString.mkString(", "))
}
}
Classes and traits inheriting the DelayedInit marker trait will have their initialization code rewritten as follows.[Code] becomes delayedInit([Code]) Initialization code comprises all statements and all value definitions that are executed during initialization.
关于scala - 保理应用特征,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8103881/
我是一名优秀的程序员,十分优秀!