小编Dun*_*gor的帖子

Scala为什么以及如何在调用一个arg函数时特别处理元组?

scala将多个函数调用参数合并到一个元组中 - 这可以被禁用吗?讨论Scala创建一个绑定到一个arg函数的元组.这导致了

scala> println(1, 2)
(1,2)
Run Code Online (Sandbox Code Playgroud)

答案说编译器允许在没有parens的情况下调用一个arg函数,因此逻辑上这是对带有元组的println的调用.

但是不能使用单个元组参数调用println

scala> val t = (1, 2)
t: (Int, Int) = (1,2)

scala> println t
<console>:6: error: value t is not a member of Unit
       println t
           ^
Run Code Online (Sandbox Code Playgroud)

所以其他事情正在发生.为什么元组在这里特别?

scala tuples

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

如何将ScalaTest与Spring集成

我需要@Autowired使用Spring上下文中的字段填充我的ScalaTest测试,但是大多数Scalatest测试(例如FeatureSpecs不能由SpringJUnit4ClassRunner.class-

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="myPackage.UnitTestSpringConfiguration", loader=AnnotationConfigContextLoader.class)
public class AdminLoginTest {
    @Autowired private WebApplication app;
    @Autowired private SiteDAO siteDAO;
Run Code Online (Sandbox Code Playgroud)

(Java,但你得到了主旨).

如何@AutowiredApplicationContextScalaTest中填充字段?

class AdminLoginFeatureTest extends FeatureSpec with GivenWhenThen with ShouldMatchersForJUnit {

  @Autowired val app: WebApplication = null
  @Autowired val siteDAO: SiteDAO = null

  feature("Admin Login") {
    scenario("Correct username and password") {...}
Run Code Online (Sandbox Code Playgroud)

spring scala scalatest

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

Scala DoubleLinkedList中的当前元素是什么?

我期待在使用一个DoubleLinkedList.它的remove()方法说"从双链表中删除当前节点".但页面中没有其他对当前的引用.

什么是当前节点,如何设置它,当然这不是删除项目的唯一方法?

scala scala-collections

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

Generics Hell - 我如何将joda.DateTime传递给Hamcrest Matcher.greaterThan?

JodaTime有

public final class DateTime extends BaseDateTime {...}
Run Code Online (Sandbox Code Playgroud)

这是最直接的

public interface ReadableInstant extends Comparable<ReadableInstant>
Run Code Online (Sandbox Code Playgroud)

哈姆克雷斯特

public static <T extends java.lang.Comparable<T>> org.hamcrest.Matcher<? super T>
    greaterThan(T value) {...}
Run Code Online (Sandbox Code Playgroud)

如果我试试

greaterThan(new DateTime());
Run Code Online (Sandbox Code Playgroud)

然后我得到一个编译错误(Eclipse提供了最多的线索)

类型为Matchers的泛型方法greaterThan(T)不适用于参数(DateTime).推断类型DateTime不是有界参数的有效替代>

我是否正确地认为签名本greaterThan应该是

public static <T extends java.lang.Comparable<? super T>> org.hamcrest.Matcher<? super T>     
    greaterThan(T value)
Run Code Online (Sandbox Code Playgroud)

?是否有一种方法可以将这些组合在一起而不是原始的铸造Comparable

java generics hamcrest jodatime

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

什么是Kotlin的保留关键字?

我已经浏览了https://kotlinlang.org/docs/reference但我找不到在Kotlin中使用的保留关键字.Kotlin有多少个关键词?只要我们知道Java有自己的关键字列表,就像这里:在此输入图像描述

kotlin

12
推荐指数
3
解决办法
4981
查看次数

我可以使用Spring Javaconfig创建原型范围的bean吗?

Spring Javaconfig的旧文档说我可以使用

@Bean(scope=DefaultScopes.PROTOTYPE)
Run Code Online (Sandbox Code Playgroud)

获得原型bean,但Spring 3.0.5 @Bean似乎没有这个属性.

有没有办法控制Javaconfig中bean的范围?

java spring

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

通常使用Scala闭包实现Java Single-Abstract-Method接口?

据我了解,当它们最终出现时,我们将能够用Java闭包代替等效的单方法接口.是否有标准的Scala习惯用法 - 使用Scala闭包实现Java Single Abstract Method接口?

理想情况下,我希望以下内容能够实现自动化

test("Closure") {
  var event: PropertyChangeEvent = null
  var label = new JLabel()
  label.addPropertyChangeListener( {e: PropertyChangeEvent => event = e} )
  label.setText("fred")
  event.getNewValue should be ("fred")
}
Run Code Online (Sandbox Code Playgroud)

java scala interface

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

为什么可变和不可变的ListMaps在Scala中有不同的顺序?

为什么ListMap的不可变版本按升序存储,而可变版本按降序存储?

如果你有scalatest-1.6.1.jar和junit-4.9.jar,这是一个你可以使用的测试

  @Test def StackoverflowQuestion()
  {
    val map = Map("A" -> 5, "B" -> 12, "C" -> 2, "D" -> 9, "E" -> 18)
    val sortedIMMUTABLEMap = collection.immutable.ListMap[String, Int](map.toList.sortBy[Int](_._2): _*)
    println("head : " + sortedIMMUTABLEMap.head._2)
    println("last : " + sortedIMMUTABLEMap.last._2)
    sortedIMMUTABLEMap.foreach(X => println(X))
    assert(sortedIMMUTABLEMap.head._2 < sortedIMMUTABLEMap.last._2)

    val sortedMUTABLEMap = collection.mutable.ListMap[String, Int](map.toList.sortBy[Int](_._2): _*)
    println("head : " + sortedMUTABLEMap.head._2)
    println("last : " + sortedMUTABLEMap.last._2)
    sortedMUTABLEMap.foreach(X => println(X))
    assert(sortedMUTABLEMap.head._2 > sortedMUTABLEMap.last._2)
  }
Run Code Online (Sandbox Code Playgroud)

下面是PASSING测试的输出:

head : 2
last : 18
(C,2)
(A,5)
(D,9)
(B,12) …
Run Code Online (Sandbox Code Playgroud)

scala scala-collections

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

如何在纯Scala中表示盒装Double?

在Scala中有两个双精度数的表示,一个是一个AnyVal,另一个是AnyRef.在JVM上,它们分别映射到基元double和类java.lang.Double.

现在除了JVM之外的其他平台会发生什么?我可以Scala.Double用于原语,但是如何指定我想要对盒装Double的引用而不指定java.lang.Double


[背景 - 留下来理解托马斯的答案,但不是根本问题.

我有一个Double,我想将Spring注入Wicket组件:

class MyPanel(id: String) extends Panel(id) {
  @SpringBean(name="rxAlarmLimitDb") var alarmLimitDb: Double = _
Run Code Online (Sandbox Code Playgroud)

如果我scala.Double按上面指定类型,则注入器失败,因为它只能注入对象.

如果我指定java.lang.Double字段的类型,一切都很好

class MyPanel(id: String) extends Panel(id) {
  @SpringBean(name="rxAlarmLimitDb") var alarmLimitDb: java.lang.Double = _
Run Code Online (Sandbox Code Playgroud)

但是我试图减少我对Java API的依赖,那么如何在Double没有它的情况下代表盒装呢?]

autoboxing scala

9
推荐指数
2
解决办法
3537
查看次数

对于JVM上的原语,Kotlin的具体类型是否不正确?

如果Kotlin函数调用为原语提供了原因,Int那么"传递的"类就是盒装基元的类,而不是未装箱的版本.

inline fun <reified T> reify() = T::class

@Test fun reified_type_doesnt_match_for_primitive() {
    assertNotEquals(Int::class, reify<Int>())
    assertNotEquals(Int::class.java, reify<Int>().java)
    assertNotEquals<Any>(Int::class, reify<Int?>())

    val nullableInt: Int? = 42
    assertNotEquals(nullableInt!!.javaClass.kotlin, reify<Int>())

    assertEquals<Any>(java.lang.Integer::class.java, reify<Int>().java)
}

@Test fun reified_type_matches_for_class() {
    assertEquals(String::class, reify<String>())
}
Run Code Online (Sandbox Code Playgroud)

这是一个错误吗?

jvm-languages kotlin

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