Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获得lteq<;=运算符在Scala中使用元组?_Scala_Operator Overloading_Tuples_Partial Ordering - Fatal编程技术网

如何获得lteq<;=运算符在Scala中使用元组?

如何获得lteq<;=运算符在Scala中使用元组?,scala,operator-overloading,tuples,partial-ordering,Scala,Operator Overloading,Tuples,Partial Ordering,我正在尝试修复以下问题: val temp1 = (3, "hello") val temp2 = (2, "abcde") temp1 <= temp2 但不是 min(temp1, temp2) 所以scala似乎没有看到我对(Int,String)元组的排序声明 我可以使用 tempPartialOrdering.lteq(temp1, temp2) 我的一些同事建议只为(Int,String)元组创建一个新类,但我发现这些解决方案并不雅观。我真的希望能够使用普通的旧版本“你的

我正在尝试修复以下问题:

val temp1 = (3, "hello")
val temp2 = (2, "abcde")
temp1 <= temp2
但不是

min(temp1, temp2)
所以scala似乎没有看到我对(Int,String)元组的排序声明

我可以使用

tempPartialOrdering.lteq(temp1, temp2)

我的一些同事建议只为(Int,String)元组创建一个新类,但我发现这些解决方案并不雅观。我真的希望能够使用普通的旧版本“你的同事是对的。创建一个自定义类型(aka类)。它比你认为的优雅得多。

你的同事是对的。创建一个自定义类型(aka类)。它比你认为的优雅得多。

试试这个:

scala> import Ordering.Implicits._
import Ordering.Implicits._

scala> (2,3) <= (1,2)
res2: Boolean = false
scala>import Ordering.Implicits_
导入Ordering.Implicits_
scala>(2,3)试试这个:

scala> import Ordering.Implicits._
import Ordering.Implicits._

scala> (2,3) <= (1,2)
res2: Boolean = false
scala>import Ordering.Implicits_
导入Ordering.Implicits_

scala>(2,3)我只想做以下几件事。你可以根据需要扩展它以获得额外的功能。它很笨重,但它可以完成任务并允许你定制订单

implicit class stringIntTuple(a: (String, Int)) extends (String, Int)(a._1,a._2) {
  def <= (x: (String, Int)): Boolean = {
    this._2 <= x._2
  }
}

temp1 <= temp2
隐式类stringIntTuple(a:(String,Int))扩展(String,Int)(a.。_1,a._2){

def我只想做以下几点。你可以根据需要扩展它以获得额外的功能。它很笨重,但它完成了任务,并允许你定制订单

implicit class stringIntTuple(a: (String, Int)) extends (String, Int)(a._1,a._2) {
  def <= (x: (String, Int)): Boolean = {
    this._2 <= x._2
  }
}

temp1 <= temp2
隐式类stringIntTuple(a:(String,Int))扩展(String,Int)(a.。_1,a._2){

def这也适用于my(Int,String)在我的示例中,pair——谢谢!您可能真的想要一个混合解决方案,但是,如果pair中的第二个值是最重要的值。我测试过,如果我使用上面的隐式代码并重写,以便首先计算第二个值,这是正确的。但是如果您不声明顺序,默认值将是第一个值最重要的是,这也适用于my(Int,String)在我的示例中,pair——谢谢!您可能真的想要一个混合解决方案,但是,如果pair中的第二个值是最重要的值。我测试过,如果我使用上面的隐式代码并重写,以便首先计算第二个值,这是正确的。但是如果您不声明顺序,默认值将是第一个值最重要的
implicit class stringIntTuple(a: (String, Int)) extends (String, Int)(a._1,a._2) {
  def <= (x: (String, Int)): Boolean = {
    this._2 <= x._2
  }
}

temp1 <= temp2