强制访问 def

Posted

技术标签:

【中文标题】强制访问 def【英文标题】:Force accessing of a def 【发布时间】:2011-11-28 09:13:13 【问题描述】:

考虑

object A 
  def m(i: Int) = i
  val m = (i: Int) => i * 2

一个得到

scala> A.m(2)
<console>: error: ambiguous reference to overloaded definition,
both value m in object A of type => (Int) => Int
and  method m in object A of type (i: Int)Int
match argument types (Int)
       A.m(2)
         ^

访问val可以通过

scala> val fun = A.m
fun: (Int) => Int = <function1>

scala> fun(2)
res: Int = 4

scala> A.m.apply(2)
res: Int = 4

但是如何访问def

【问题讨论】:

【参考方案1】:

这完全是垃圾(请不要在家里这样做),但您可以通过assigning A to a variable of structural type, that has only the first m 进行操作。

val x :  def m(i:Int):Int  = A
x.m(10)

【讨论】:

绝招!顺便说一句,只是铸造也有效: A.asInstanceOf[def m(i:Int):Int].m(10) @Philippe:那里不需要asInstanceOf(A: def m(i:Int):Int).m(10)

以上是关于强制访问 def的主要内容,如果未能解决你的问题,请参考以下文章

教师用 pytorch RNN 强制

如何在多个(超过 2 个)集合中仅强制一组字段为非 NULL?

django python def 选择/文档

强制 QItemDelegate 重绘

是否使用clojure.spec进行强制惯用?

Python 强制停止多线程运行