Scala:视图的应用
发布时间:2020-12-16 18:55:41 所属栏目:安全 来源:网络整理
导读:这是一个简短的代码: import scala.language.implicitConversionsimplicit def str2int(str:String) = str.toIntobject Container { def addIt[A](x: A)(implicit str2int: A = Int) = 123 + x def addIt2(x: String)(implicit str2int: String = Int) = 12
这是一个简短的代码:
import scala.language.implicitConversions implicit def str2int(str:String) = str.toInt object Container { def addIt[A](x: A)(implicit str2int: A => Int) = 123 + x def addIt2(x: String)(implicit str2int: String => Int) = 123 + x } println(Container.addIt("123")); println(Container.addIt2("123")); 两个问题: >是“(隐式str2int:A => Int)”称为视图?当你说一个“视图”时,代码的哪个特定部分表示它? 关于这个主题的任何好资源也将受到高度赞赏.谢谢. 解决方法
视图意味着类型A可以被“查看”为类型B,由隐式函数A =>指定. B.所以,是的,addIt和addIt2中的隐式参数都是视图.
addIt2返回123123,因为(不幸的是)它可以调用两个对象,其中一个是String.在Scala查看应用str2int转换的可能性之前,这就开始了.如果您不想这样,您可以显式应用视图: def addIt2(x: String)(implicit str2int: String => Int) = 123 + str2int(x) 或者你可以隐藏any2stringadd转换: object Container { import Predef.{any2stringadd => _} def addIt2(x: String)(implicit str2int: String => Int) = 123 + x } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |