gpt4 book ai didi

Scala 自定义运算符(示例 abs)

转载 作者:行者123 更新时间:2023-12-05 01:44:48 26 4
gpt4 key购买 nike

我知道 scala 允许重载它的默认运算符(+、-!等)。是否可以定义自定义运算符并制作类似 |.| 的内容?运算符使得 | -3|计算结果为 3。或者定义像++++ 这样的运算符以便 a++++ b 等于 a+3*b?

最佳答案

你应该看看scala operators documentation .

您可以轻松地创建++++ 运算符,但不能创建 |.|运营商。

scala 中的运算符只是具有非字母数字名称的函数。由于 scala 还支持将 a.f(b) 调用为 f b,因此您可以实现第一个行为。例如:

case class A(v: Int) {
def ++++(b: A): A = A(v + 3 * b.v)
}

val a = A(1)
val b = A(2)
a ++++ b
>> A(7)
a.++++(b) // just another way of doing the exact same call

如果你想将它添加到整数中,你只需创建一个隐式类来添加它。

另一种选择是给运算符加上前缀,例如考虑使用 -a 来获得否定。没有“第一个元素”可以将 - 应用于,而是 - 应用于 a(参见 this answer)。

例如:

case class A(v: Int) {
def unary_!(): Int = -v
}
val a = A(3)
!a
>> -3

正在做 |.|有两个问题:首先,运营商有两个部分,即它是 split 的。第二种是使用|

为了做一个由两部分组成的运算符(比如 !.!),您可能想要生成一些私有(private)类型并从其中一个返回它!然后将其用作另一个的输入以返回输出类型。

第二个问题是|的使用这是一个非法字符。看this answer获取合法字符列表

关于Scala 自定义运算符(示例 abs),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44782005/

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