Scala方法调用中u的语义

Scala方法调用中u的语义,scala,Scala,scala 2.9.2 这很好 object AppBuilder extends App { def app( blockw: Int => String ) : List[String] = List( blockw(6) ) def app( block: => String ) : List[String] = app( _ => block ) } 但是在REPL中,与上面相同的方法/函数(不确定这里的区别)如果没有包含在类中,我会得到以下错误 scal

scala 2.9.2 这很好

object AppBuilder extends App {

  def app( blockw: Int => String ) : List[String] = List( blockw(6) )

  def app( block: => String ) : List[String] = app( _ => block )
}
但是在REPL中,与上面相同的方法/函数(不确定这里的区别)如果没有包含在类中,我会得到以下错误

scala> def app( blockw: Int => String ) : List[String] = List( blockw(6) )
app: (blockw: Int => String)List[String]

scala> def app( block: => String ) : List[String] = app( _ => block )
<console>:8: error: missing parameter type
       def app( block: => String ) : List[String] = app( _ => block )
                                                     ^
scala>def应用程序(blockw:Int=>String):List[String]=List(blockw(6))
应用:(blockw:Int=>String)列表[字符串]
scala>def应用程序(block:=>String):列表[String]=app(=>block)
:8:错误:缺少参数类型
def应用程序(block:=>String):列表[String]=app(=>block)
^

REPL当前不支持重载方法。有关原因的解释,请参阅。你可以用一个更简单的例子来证明这一点:

scala> def f(x: Int) = x
f: (x: Int)Int

scala> def f(x: String) = x
f: (x: String)String
现在尝试
f(0)
,您将得到类型不匹配

您可以使用粘贴模式作为解决方法:

scala> :paste
// Entering paste mode (ctrl-D to finish)

def app( blockw: Int => String ) : List[String] = List( blockw(6) )
def app( block: => String ) : List[String] = app( _ => block )

// Exiting paste mode, now interpreting.

app: (blockw: Int => String)List[String] <and> (block: => String)List[String]
app: (blockw: Int => String)List[String] <and> (block: => String)List[String]
scala>:粘贴
//进入粘贴模式(按ctrl-D键完成)
def应用程序(blockw:Int=>String):List[String]=List(blockw(6))
def应用程序(block:=>String):列表[String]=app(=>block)
//正在退出粘贴模式,现在正在解释。

app:(blockw:Int=>String)List[String]。

重载方法目前在REPL中不受支持。有关原因的解释,请参阅。你可以用一个更简单的例子来证明这一点:

scala> def f(x: Int) = x
f: (x: Int)Int

scala> def f(x: String) = x
f: (x: String)String
现在尝试
f(0)
,您将得到类型不匹配

您可以使用粘贴模式作为解决方法:

scala> :paste
// Entering paste mode (ctrl-D to finish)

def app( blockw: Int => String ) : List[String] = List( blockw(6) )
def app( block: => String ) : List[String] = app( _ => block )

// Exiting paste mode, now interpreting.

app: (blockw: Int => String)List[String] <and> (block: => String)List[String]
app: (blockw: Int => String)List[String] <and> (block: => String)List[String]
scala>:粘贴
//进入粘贴模式(按ctrl-D键完成)
def应用程序(blockw:Int=>String):List[String]=List(blockw(6))
def应用程序(block:=>String):列表[String]=app(=>block)
//正在退出粘贴模式,现在正在解释。
应用:(blockw:Int=>String)列表[String]