针对Java的另一个构建工具真的让我感到满意吗?
如果你使用Gradle而不是其他工具,为什么?
dependency:tree
可用于查看给定项目的依赖关系树.但我需要的是看到第三方工件的依赖树.
我想我可以创建一个空项目,但我正在寻找更容易的东西(我需要为几个工件做这个).
我有一个基本抽象类(trait).它有一个抽象的方法foo()
.它由几个派生类扩展和实现.我想创建一个可以混合到派生类中的特征,以便它实现foo()
然后调用派生类foo()
.
就像是:
trait Foo {
def foo()
}
trait M extends Foo {
override def foo() {
println("M")
super.foo()
}
}
class FooImpl1 extends Foo {
override def foo() {
println("Impl")
}
}
class FooImpl2 extends FooImpl1 with M
Run Code Online (Sandbox Code Playgroud)
我尝试过自我类型和结构类型,但我无法让它工作.
我试过用Java->编辑器,General-> Appearance-> Colors And Fonts,General-> Editors-> Text Editors-> Annotations,但是找不到它
当我编译时,javac输出:
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.`
Run Code Online (Sandbox Code Playgroud)
我希望压制这个警告.尝试-Xlint:none似乎没有帮助.
class A def a puts 'in #a' end end class B < A def a b() end def b # here i want to call A#a. end end
说我做了几次提交,并希望能够选择我推送到远程存储库的那些提交.我怎么能这样做(在ascii:C1-> C2-> C3-> C4,我想推C2和C4).是否会重新订购rebase,重置,推送然后重置工作?(C1-> C2-> C3-> C4 => C2-> C4-> C1-> C3 =>复位C4 => push =>复位C3).有更好的方法吗?
在尝试找到另一个问题([1])的解决方案时,我遇到了一个不同的隐式扩展错误.我正在寻找关于这意味着什么的解释
这是用例:
scala> implicit def ordering[T](implicit conv: T => Ordered[T], res: Ordering[Ordered[T]]) = Ordering.by(conv)
ordering: [T](implicit conv: (T) => Ordered[T],implicit res: Ordering[Ordered[T]])scala.math.Ordering[T]
scala> def foo[T <% Ordered[T]](s : Seq[T]) = s.sorted
<console>:6: error: diverging implicit expansion for type Ordering[T]
starting with method ordering in object $iw
def foo[T <% Ordered[T]](s : Seq[T]) = s.sorted
^
Run Code Online (Sandbox Code Playgroud) 在Java中,日志记录的标准习惯用法是为记录器对象创建一个静态变量,并在各种方法中使用它.
在Scala中,看起来成语是用记录器成员创建Logging特征并在具体类中混合特征.这意味着每次创建对象时,它都会调用日志框架来获取记录器,并且由于附加引用,对象也会变大.
是否有一种替代方案可以在仍然使用每类记录器实例时轻松使用"with Logging"?
编辑:我的问题不是关于如何在Scala中编写日志框架,而是如何使用现有的(log4j)而不会产生性能开销(获取每个实例的引用)或代码复杂性.另外,是的,我想使用log4j,因为我将使用可能使用log4j的Java编写的第三方库.
scala> (1 to 10).iterator.map{_ * 2}.toList
res1: List[Int] = List(2, 4, 6, 8, 10, 12, 14, 16, 18, 20)
scala> (1 to 10).view.map{_ * 2}.force
res2: Seq[Int] = Vector(2, 4, 6, 8, 10, 12, 14, 16, 18, 20)
Run Code Online (Sandbox Code Playgroud)
除了使用next,hasNext之外,何时应该选择迭代器优先于视图还是查看迭代器?