【发布时间】:2012-05-20 11:39:16
【问题描述】:
我可以在 Scala 的 Predef 类中使用 String 作为第二个参数的 require 方法,例如
require ("foo" == "bar", "foobar")
首先想到 require 方法被重载为不同的参数作为第二个参数。但事实并非如此。 require 方法(Scala 2.9.1)的签名是:
require(requirement: Boolean, message: ⇒ Any): Unit
为什么上面的方法调用是可能的?
【问题讨论】:
-
定义有什么问题?
"foo" == "bar"是Boolean值,String符合Any(就像 any 类型一样)。 -
问题是,为什么 String 是第二个参数的有效类型,而签名说它必须是函数 'message: => Any'
标签: scala