【问题标题】:What does _ mean in this method which already takes a default value? [duplicate]_ 在这个已经采用默认值的方法中是什么意思? [复制]
【发布时间】:2020-12-17 00:24:53
【问题描述】:

我正在开发一个具有辅助方法的测试套件,例如:

def setupMocks(isChild: Boolean = false): Unit

在某些测试中,它被调用为:

setupMocks(_)

而在其他测试中,它被调用为:

setupMocks()

_ 在这里做什么?有什么意义?我确实尝试过调试器,但它只是跳过,我无法弄清楚。

【问题讨论】:

    标签: scala scala-placeholder-syntax


    【解决方案1】:

    因为有一个默认参数,所以你可以把它当作一个有1个参数和0个参数的方法(有点)。

    下划线基本上是函数参数的占位符。 setupMocks(_)x => setupMocks(isChild=x) 的简写。见What are all the uses of an underscore in Scala?

    第二个例子是一个普通的方法调用,用isChild=false调用。

    【讨论】:

    • 所以真正发生的是setup(_) 返回一个接受一个参数并返回Unit 的函数。这与实际调用方法的setupMocks() 完全不同!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-27
    • 2010-10-05
    • 1970-01-01
    相关资源
    最近更新 更多