问题标签 [implicits]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
533 浏览

scala - scala隐式导致StackOverflowError

这个隐含的 val 如何导致 StackOverFlowError?

(削减了我的原始代码,仍然导致错误)

我在做一些非法的隐含行为吗?

0 投票
3 回答
890 浏览

java - Integrating scala with java

I'm new to Scala. I need help in resolving this issue.
I have built a project which is written in Scala and I'm trying to integrate it with a Java project. I have taken the dependency on the build scala jar in my Java project in eclipse. However when I call a method in the Scala jar I get ClassCastException when running the application:

Below is the exception I get

Exception in thread "main" java.lang.ClassCastException: com.rockymadden.stringmetric.phonetic.MetaphoneAlgorithm cannot be cast to com.rockymadden.stringmetric.StringFilter at com.rockymadden.stringmetric.phonetic.MetaphoneAlgorithm.compute(MetaphoneAlgorithm.scala:10) at org.gobe.search.dictionary.test.PhoneticTest.main(PhoneticTest.java:16)

What can I do to fix this ?

In the above code "MetaphoneMetric" , "DummyImplicit" are part of Scala Jar I generated.
Logic of Metaphone algorithm can be found at http://pastebin.com/d7CXjDtx

0 投票
2 回答
384 浏览

scala - 包装部分应用的构造函数的 Scala 类 - 如何使用它来创建 API 方法?

我正在尝试创建一个简单的 api 来处理时间间隔。(我知道joda time,我不想重新发明它。这是一个练习)。

我想要实现的是:

(1)


(2)


我已经设法实现(1),如下所示:(忽略toString,Ordered trait,aso)


但是,我不知道如何实现(2)(即:Interval.forMinutes)。

似乎无法解决这个问题。
这个“HalfInterval”包装器是否Time => Interval有意义?
我根据经验设计了它——只是为了让from(..).to(..)调用按计划工作——而不是考虑到一些功能概念模型。
有没有更好的方法来实现这个api?

谢谢

0 投票
1 回答
118 浏览

scala - 可以通过委托来满足 scala 自我类型吗?

假设我有(这是相当做作的)

有没有办法避免在 new Query() 创建中出现多余的“override val dbName = self.dbName, override val dbHost = self.dbHost”,而是指示新的 Query 对象应该继承自/委托给 HasADbConnection 实例对于这些领域?

我意识到 Query 将 DbConnection 作为构造函数参数可能更合适。我对满足 Query 自类型的其他方式感兴趣。也许没有办法将 HasADbconnection 字段传播到新的 Query 实例上,这是一个完全有效的答案。

0 投票
2 回答
154 浏览

scala - 我可以告诉 scala 如何更喜欢更具体的隐式,而不是给出“模棱两可的隐式”错误吗?

下面的代码给出了一个错误。

错误:

在我的真实代码中,显式传递隐式参数并不是那么简单。有没有办法告诉它总是更喜欢SubWriterBaseWriter因为前者更具体?无需手动传递它foo(sub)(SubWriter)吗?

0 投票
1 回答
193 浏览

scala - 带有隐式的scala用户定义文字

我真的很喜欢 Scala 的灵活性和简洁性。有了这个金额的定义:

您可以轻松创建实例:

使用范围内的以下定义会更容易:

我的问题是:有没有办法可以做到以下几点:

没有为每种货币(欧元、美元、...)定义函数?

0 投票
1 回答
897 浏览

scala - 具有两个通用参数的上下文边界

在 Scala 中,我可以使用上下文边界:

意思是一样的:

如果我有一个带有两个泛型参数的类怎么办。即我希望能够确保我有一个Writer[T, String]. 是否有可以使用上下文边界 ( T : ...) 的语法,或者我是否需要显式地使用隐式(写起来很有趣)。

0 投票
2 回答
542 浏览

scala - 为递归和嵌套类型结构定义隐式转换

我定义了以下类 PositionSpace,它具有嵌套类 Position 和 SubPositionSpace。SubPositionSpace 本身既是 Position 又是 PositionSpace(因此它是一个也定义了自己的位置的位置)。我已经定义了一个包装类 SubPosition,以便任何类型为 x.SubPositionSpace#Position 的对象(对于任何作为 PositionSpace 的对象 x)都可以用作类型为 x.Position 的对象。但是,我想让这种转换隐含,这就是我卡住的地方。从逻辑上讲,这应该是可能的。但是,我不知道在哪里或如何定义转换以便编译器找到它,这让我很头疼。

下面是我的代码。请注意,我已在底部添加了测试用例。

到目前为止我遇到的障碍

路径相关类型

部分问题似乎是这种转换涉及依赖于路径的类型,其中输入类型和输出类型使用相同的路径。但是,没有语法可以编写带有类型签名的方法x.Position => y.Position where y : PositionSpace and x : y.SubPositionSpace. 通过添加附加参数以传递路径(如下所示)很容易解决问题,但是您不能向隐式转换方法添加附加参数(如果你希望它们被这样使用)。

0 投票
1 回答
4352 浏览

scala - Scala 喷雾客户端为 AKKA ActorRefFactory 定义隐式

我正在尝试使用 Scala 和 spray-client 编写一个简单的 HTTP 客户端。我的客户基于Spray docs上给出的示例。

我的问题是该示例正在创建一个新的隐式ActorSystem 即

但我希望我的客户端是可重用的,而不是创建一个新的 ActorSystem。

这是我的代码的要点。

但是我收到两个关于隐式的编译器错误

我应该如何更改 API 定义?

0 投票
0 回答
86 浏览

scala - Lift、squeryl 记录和 scala 隐式:添加新方法来记录,扩展 AnyVal

我想为 Squeryl Record(Lift Web 框架)添加其他方法。该方法名为 validateTry。请参阅下面的代码

它按预期工作。但我想扩展 AnyVal,像这样

因为在我看来它将是“正确的”(我认为它应该对性能产生影响)。但是在我添加了“扩展 AnyVal”之后,我收到了错误“值类需要恰好有一个公共 val 参数”。这是什么以及如何解决?(我真的需要修复吗?)

谢谢。

UPD。我在构造函数定义中添加了“val”,它开始工作。感谢 Vasya Novikov 给我的链接。正确的代码如下所示:

它按预期工作。文档说它应该避免如我所见的类的实例化。链接是http://docs.scala-lang.org/overviews/core/value-classes.html