标签: implicit

日志仅涉及"分散隐式扩展"

其他答案建议使用"-Xlog-implicits"选项来调试"分散隐式扩展"错误.但是,它也会在与这些错误无关的地方记录大量含义.有没有办法限制它只能解释产生编译错误的地方?

scala compiler-errors implicit scalac

31
推荐指数
1
解决办法
1873
查看次数

是否可以使用Matplotlib绘制隐式方程?

我想在Matplotlib中绘制隐式方程(形式为f(x,y)= g(x,y),例如X ^ y = y ^ x).这可能吗?

python equation matplotlib implicit sympy

30
推荐指数
4
解决办法
3万
查看次数

Scala中匿名函数中的参数之前的隐式关键字

我理解Scala中的隐式参数和隐式转换,但我今天第一次看到这个:匿名函数中参数前面的隐式关键字:

Action { implicit request =>
  Ok("Got request [" + request + "]")
}
Run Code Online (Sandbox Code Playgroud)

隐式关键字在这里做什么?

网络上是否有资源可以更详细地描述用例?

scala implicit

28
推荐指数
3
解决办法
6142
查看次数

Scala:隐式传递一个隐式参数,另一个显式传递.可能吗?

让我们考虑一下这个功能:

def foo(implicit a:Int, b:String) = println(a,b).

现在,让我们假设有一个隐含的StringInt(implicit val i1=1)的范围,但我们想传递一个其他的,没有隐含的Int(val i2=2明确的)来foo.

我们怎么做?可能吗?谢谢阅读.

scala implicit

28
推荐指数
3
解决办法
1万
查看次数

通过给定的泛型类型Scala获取类的伴随对象

我想要做的是创建一个函数,它将采用泛型类并在其中使用静态方法(对不起Java语言,我的意思是它的伴随对象的方法).

trait Worker {def doSth: Unit}

class Base

object Base extends Worker

// this actually wouldn't work, just to show what I'm trying to achieve
def callSthStatic[T that companion object is <: Worker](implicit m: Manifest[T]) {
  // here I want to call T.doSth (on T object)
  m.getMagicallyCompanionObject.doSth
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

types scala class object implicit

27
推荐指数
3
解决办法
1万
查看次数

有没有办法在for comprehension中声明一个隐含的val?

我有一些代码嵌套调用flatMap,如下所示:

foo.flatMap(implicit f => bar(123).flatMap(b =>
  /* and so on... implicit f is still in scope here.*/
))
Run Code Online (Sandbox Code Playgroud)

通常,人们会将其写为理解,这使得代码更具可读性:

for {
  f <- foo
  b <- bar(123)
  /* yet more method calls that need f as an implicit parameter*/
}
Run Code Online (Sandbox Code Playgroud)

但我需要f暗示,我不认为有办法用于理解.在那儿?当然我可以明确地传递f,但这意味着再见DSL.我对Scala 2.9和2.10的答案感兴趣.

为了清楚起见,我想做这样的事情,但它不会编译:

for {
  implicit f <- foo
  b <- bar(123) //bar takes implicit argument
  /* yet more method calls that need f as an implicit parameter*/
}
Run Code Online (Sandbox Code Playgroud)

编辑:也许一个功能请求是一个好主意?

EDIT2:这应该适用于所有可以用于理解的类型,因此不仅仅是通常的集合类型,如ListSeq,还有Future …

scala implicit for-comprehension scala-2.9 scala-2.10

27
推荐指数
3
解决办法
2491
查看次数

含有隐含的Scala函数文字

请原谅我,如果已经在别处问过这个问题.我有一个涉及函数值和隐式参数的Scala语法问题.

我很自在地使用Scala的currying功能.例如,如果我有一个sum函数,并希望使第二个参数隐含:

scala> def sum(a: Int)(implicit b: Int) = a + b
sum: (a: Int)(implicit b: Int)Int
Run Code Online (Sandbox Code Playgroud)

有没有办法使用函数值语法执行此操作?忽略隐含片刻,我通常会写出如下的curried函数值:

scala> val sum2 = (a: Int) => (b: Int) => a + b
sum: (Int) => (Int) => Int = <function1>
Run Code Online (Sandbox Code Playgroud)

但是,第二种方法中的函数签名是非常不同的(currying正在明确表达).只是将隐式关键字添加到b中没有多大意义,编译器也会抱怨:

scala> val sum2 = (a: Int) => (implicit b: Int) => a + b
<console>:1: error: '=>' expected but ')' found.
       val sum2 = (a: Int) => (implicit b: Int) => a + b
                                              ^
Run Code Online (Sandbox Code Playgroud)

此外,从第一种获取函数值的方法中部分应用总和也会导致问题:

scala> val sumFunction = …
Run Code Online (Sandbox Code Playgroud)

scala function implicit currying literals

25
推荐指数
3
解决办法
4667
查看次数

为什么静态类的成员需要声明为静态?为什么不是隐含的?

显然,静态类上不能有实例成员,因为该类永远不会被实例化.为什么我们需要将成员声明为静态?

.net c# implicit static-members static-classes

24
推荐指数
2
解决办法
2590
查看次数

Scala隐式使用选择

我一直想知道透明 implicit转换是否真的是一个好主意,是否真的可以更好地使用implicits更多,嗯,明确.例如,假设我有一个接受a Date作为参数的方法,并且我有一个隐式转换,它将a String转换为Date:

implicit def str2date(s: String) : Date = new SimpleDateFormat("yyyyMMdd").parse(s)

private def foo(d: Date)
Run Code Online (Sandbox Code Playgroud)

那显然我可以通过透明implicit转换来调用它:

foo("20090910")
Run Code Online (Sandbox Code Playgroud)

将字符串转换为更明确的日期这一事实会更好吗?

class DateString(val s: String) { 
  def toDate : Date = new SimpleDateFormat("yyyyMMdd").parse(s) 
}

implicit def str2datestr(s: String) : DateString = new DateString(s)
Run Code Online (Sandbox Code Playgroud)

那么用法看起来更像是:

foo("20090910".toDate)
Run Code Online (Sandbox Code Playgroud)

这样做的好处是稍后会发生什么事情更清楚 - 我现在已经被implicit我应该知道的透明转换(OptionIterable任何人?)已经被抓了几次,这种用法仍然允许我们利用implicit秒.

scala implicit

23
推荐指数
2
解决办法
2244
查看次数

是否有系统的方法来发现哪些隐式defs在范围内,哪一个在特定点绑定?

通常不需要关注Scala中的隐式参数,但有时理解编译器如何自动提供它们非常有用.不幸的是,这种理解似乎很难获得!

在给定的代码段中是否有一种通用的方法来发现如何提供隐式参数?

理想情况下,有一天IDE集成会以某种方式提供这些信息,但我现在预计我将不得不深入挖掘.有没有办法让编译器准确解释它在任何给定点选择的隐式定义?这可以从其他编译器输出间接解密吗?

举个例子,我想知道如何计算出我自己在implicit bf: CanBuildFrom[Repr, B, That]参数TraversableLike.map从何而来,不读这样的问题这样一个堆栈溢出!

compiler-construction debugging scala implicit

22
推荐指数
2
解决办法
2880
查看次数