gpt4 book ai didi

Scala:两个相等类型之间的类型差异和模式匹配

转载 作者:行者123 更新时间:2023-12-04 06:54:47 26 4
gpt4 key购买 nike

前几天我正在玩一个类来处理一些算术运算(是的,我知道数字将在 2.8 中出现),并发现自己想知道如何简化以下内容:

def Foo[A]( _1:A, _2:A ) = (_1, _2) match{
case _1:Bar, _2:Bar => _1 + _2
case _1:Baff, _2:Baff => _1 push _2
case _, _ => None
}

这样我就可以做
def Foo[A]( _1:A, _2:A ) = _1 match{
case _1:Bar => _1 + _2
case _1:Baff => _1 push _2
case _ => None
}

当然,我知道在以声明方式声明函数时 _2的类型可以想象继承自 _1的类型,“A”可能是一个共享特征,等等。我知道这意味着编译器需要抗议以保护代码。有没有办法说“我希望 _1 和 _2 是同一个 extact 类”,这样我就不必做双 _1:Int, _2:int宣言?

最佳答案

也许我误解了你,但如果你只是希望两个参数必须是相同的类型,你可以执行以下操作:

def Foo[A,B >: A <: A](_1: A, _2:B) = ...

这指定 B是由 A 限定的下类型和上类型,因此必须是 A .因此它只会在 _1 时编译和 _2属于同一类型。

关于Scala:两个相等类型之间的类型差异和模式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2692417/

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