任何T的T对T的部分函数

时间:2014-01-02 22:05:33

标签: scala

我今天一直在问很多关于部分功能的问题。早些时候我想做这样的事情,

def partial : PartialFunction[T, T]

我想说的是,无论你给我什么类型,如果我被定义,我会给你相同的类型。显然上面的语法是无稽之谈,但它让你知道我想要做什么。

因此,当人们实施这一点时,他们被迫做了

{
case s : String = > s + "hello"
case i : Int => i + 100
}

不能做

{
case s : String => 4
case i : Int = "hello"
}

我不相信这是可能的。也许我错过了一些非常简单的东西,并且赞成那些可以向我展示光明的人。

1 个答案:

答案 0 :(得分:2)

您可以种类进行操作,具体取决于您的使用案例:

type PartialT[T] = PartialFunction[T,T]
def something(pfn: PartialT[String]) = println("yarp")

something { case s: String => 42 }
  <console>:10: error: type mismatch;
   found   : Int(42)
   required: String
          something { case s: String => 42 }
                                        ^

something { case s: String => "xxx" }
  yarp