gpt4 book ai didi

scala - 我怎样才能消除这个点?我正在测试隐式转换

转载 作者:行者123 更新时间:2023-12-04 16:06:11 25 4
gpt4 key购买 nike

我一直在尝试像这样使用 Int 类型:10 twotimes

它类似于 Akka 的持续时间包,允许编写例如 10 分钟5 秒

我做了以下事情:

object ImplicitConversion2 {
class Test(val a:Int) {
def threetimes = a * 3
}

implicit def IntToTest(e:Int) = new Test(e)

5.threetimes //> res0: Int = 15
10.threetimes //> res1: Int = 30
11.threetimes //> res2: Int = 33
}

在这种情况下,我可以使用 threetimes,例如 10.threetimes,即在 10threetimes< 之间加一个点。我想消除 Intthreetimes 之间的点。

但是如果我将 5 写三次,就会出现错误。我该怎么做?

最佳答案

您指的是哪个版本的 Scala?在 2.10.1 版中,我收到一个功能警告,即我应该添加以下内容

import scala.language.implicitConversions

激活隐式转换。这样做之后,正如您所说,10.threetimes 工作正常,但是对于 10 threetimes,我收到另一个功能警告,告诉我添加:

import scala.language.postfixOps

启用后缀运算符。这样做之后,一切正常。

编辑:这是原始 SIP 的摘录(可在 here 中找到),其中给出了现在默认不鼓励使用后缀运算符的原因(即,如果您使用它们;在以后的版本中,这可能会变成错误而不是警告):

postfixOps. Only where enabled, postfix operator notation (expr op) will be allowed. Why keep the feature? Several DSLs written in Scala need the notation. Why control it? Postfix operators interact poorly with semicolon inference. Most programmers avoid them for this reason.

关于scala - 我怎样才能消除这个点?我正在测试隐式转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16555322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com