部分函数是一个函数,只为一组特定的值返回值,即该功能不能用于某些输入值返回值。定义此函数的目的是在处理代码时仅允许某些值。像被0除的情况一样,我们需要限制除法以避免错误。
这些是Scala编程语言的不一致功能,在某些情况下,它们可能很有用。
Scala中部分函数的实现也需要其他方法。用于实现的方法是apply()
和isDefinedAt()
。另外,您使用case语句来实现它。
apply()
方法用于显示功能的应用。
isDefinedAt()
方法用于检查值是否在函数范围内。
语法:
var function_name = new PartialFunction[input_type, return_type]
范例1:
使用和方法实现部分功能。isdefinedat()
apply()
object MyObject { val divide = new PartialFunction[Int, Int] { def isDefinedAt(q: Int) = q != 0 def apply(q: Int) = 124 / q } def main(args: Array[String]) { println("该数字除以12是 " + divide(12)) } }
输出结果
该数字除以12是 10
范例2:
使用orElse语句实现部分函数。
object MyObject { val Case1: PartialFunction[Int, String] = { case x if (x % 3) != 0 => "Odd" } val Case2: PartialFunction[Int, String] = { case y if (y % 2) == 0 => "Even" } val evenorodd = Case1 orElse Case2 def main(args: Array[String]) { var x= 324 println("number "+x+" is "+evenorodd(x)) } }
输出结果
number 324 is Even
范例3:
使用andThen语句实现部分函数。
object MyObject { def main(args: Array[String]) { val operation1: PartialFunction[Int, Int] = { case x if (x%4)!= 0=> x*42 } val operation2=(x: Int)=> x/3 val op = operation1 andThen operation2 println("Initial value is 34\t and the value after operations is "+op(34)) } }
输出结果
Initial value is 34 and the value after operations is 476