为什么eta-expansion不适用于隐式添加的成员 [英] Why eta-expansion doesn't work with implicitly added members

查看:97
本文介绍了为什么eta-expansion不适用于隐式添加的成员的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这不起作用:

 % -  10s%-50s%s.format _ 
< console>:13:错误:特性字符串类型中缺少方法格式的参数;
如果您想将其视为部分应用函数,则使用`_'后跟此方法
%-10s%-50s%s.format _



但是这样做:

  import scala.collection .immutable._ 

scala> (%-10s%-50s%s:StringLike [_])。format _
res91:Seq [Any] => String =< function1>

那么,为什么我必须明确指定类型类?



/ browse / SI-8299rel =nofollow> https://issues.scala-lang.org/browse/SI-8299



这就是不是一个完整的原因。



不确定这是否需要说明,但:

 阶> val f:Seq [Any] => String =%-10s%-50s%s.format 
f:Seq [Any] => String =< function1>


This doesn't work:

"%-10s %-50s %s".format _
<console>:13: error: missing arguments for method format in trait StringLike;
 follow this method with `_' if you want to treat it as a partially applied function
          "%-10s %-50s %s".format _

But this works:

import scala.collection.immutable._

scala> ("%-10s %-50s %s": StringLike[_]).format _
res91: Seq[Any] => String = <function1>

So, why i have to specify type class explicitly?

解决方案

This is why:

https://issues.scala-lang.org/browse/SI-8299

That's not a whole lotta why.

Not sure if this needs saying, but:

scala> val f: Seq[Any] => String = "%-10s %-50s %s".format
f: Seq[Any] => String = <function1>

这篇关于为什么eta-expansion不适用于隐式添加的成员的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆