Scala如何将列表视为函数?

bar*_*ara 0 scala

假设我有一个int列表.我可以调用lift它上面的函数并获得另一个类型的函数T => Option[T].

val f0: Int => Option[Int] = List(1, 2).lift

println(f0.apply(0)) // Some(1)
println(f0.apply(1)) // Some(2)
println(f0.apply(2)) // None
Run Code Online (Sandbox Code Playgroud)

但它是如何工作的?为什么我可以应用lift(来自PartialFunction特征)功能List?有一些隐含的魔法吗?

Dim*_*ima 5

没有"隐含的魔力".List[T]只是一个子类 PartialFunction[Int, T]