如何将常量整数作为偏函数的输入?
How to take a constant Integer as input in Partial Function?
我是 scala 的新手,我有一个用例,我想定义一个部分函数来添加三个数字,其中一个数字是常量,两个
数字可以作为输入传递并定义另一个可以采用部分的方法
用作输入并给出其立方体作为结果。
以下部分函数将 12345 添加到传递给它的元组中的每个数字
scala> val addConstantTo: PartialFunction[(Int, Int), Int] = {
| case (a, b) => a + b + 12345
| }
addConstantTo: PartialFunction[(Int, Int),Int] = <function1>
scala> addConstantTo((12, 34))
res4: Int = 12391
这扩展了概念,通过编程定义一个部分函数,该函数将任意数字添加到元组的元素中:
scala> def addTo(c: Int): PartialFunction[(Int, Int), Int] = {
| case (a, b) => a + b + c
| }
addTo: (c: Int)PartialFunction[(Int, Int),Int]
scala> val pf = addTo(3)
pf: PartialFunction[(Int, Int),Int] = <function1>
scala> pf((1, 2))
res5: Int = 6
让它沉入一点:)
嗯...这取决于你的常量来自哪里?
选择 1 - 你的函数形成一个闭包,其中一个常量存在于作用域中。
val yourConstant = 10
val pf: PartialFunction[(Int, Int), Int] = {
case (x, y) => x + y + yourConstant
}
pf((5, 10))
选项 2 - 你的函数有一个局部常量。
val pf: PartialFunction[(Int, Int), Int] = {
case (x, y) => x + y + 10
}
pf((5, 10))
此外,正如许多其他人指出的那样 - 这看起来不像是部分功能的用例。您确定要 Partial Function
而不是 partially applied function
吗?
如果您正在寻找部分应用的函数,
// first you need a curried function
// Curries function are function which can take parameters in steps to build intermidatary functions.
def normalDef(c: Int)(x: Int, y: Int): Int = c + y + x
// normalDef: normalDef[](val c: Int)(val x: Int,val y: Int) => Int
// now you can "partially apply" this "curried" function to your partially applied function
val addTo10PartiallyApplied = normalDef(10) _
// addTo10PartiallyApplied: (Int, Int) => Int = $Lambda40/1924827254@46202553
val total = addTo10PartiallyApplied(1, 2)
// total: Int = 13
我是 scala 的新手,我有一个用例,我想定义一个部分函数来添加三个数字,其中一个数字是常量,两个 数字可以作为输入传递并定义另一个可以采用部分的方法 用作输入并给出其立方体作为结果。
以下部分函数将 12345 添加到传递给它的元组中的每个数字
scala> val addConstantTo: PartialFunction[(Int, Int), Int] = {
| case (a, b) => a + b + 12345
| }
addConstantTo: PartialFunction[(Int, Int),Int] = <function1>
scala> addConstantTo((12, 34))
res4: Int = 12391
这扩展了概念,通过编程定义一个部分函数,该函数将任意数字添加到元组的元素中:
scala> def addTo(c: Int): PartialFunction[(Int, Int), Int] = {
| case (a, b) => a + b + c
| }
addTo: (c: Int)PartialFunction[(Int, Int),Int]
scala> val pf = addTo(3)
pf: PartialFunction[(Int, Int),Int] = <function1>
scala> pf((1, 2))
res5: Int = 6
让它沉入一点:)
嗯...这取决于你的常量来自哪里?
选择 1 - 你的函数形成一个闭包,其中一个常量存在于作用域中。
val yourConstant = 10
val pf: PartialFunction[(Int, Int), Int] = {
case (x, y) => x + y + yourConstant
}
pf((5, 10))
选项 2 - 你的函数有一个局部常量。
val pf: PartialFunction[(Int, Int), Int] = {
case (x, y) => x + y + 10
}
pf((5, 10))
此外,正如许多其他人指出的那样 - 这看起来不像是部分功能的用例。您确定要 Partial Function
而不是 partially applied function
吗?
如果您正在寻找部分应用的函数,
// first you need a curried function
// Curries function are function which can take parameters in steps to build intermidatary functions.
def normalDef(c: Int)(x: Int, y: Int): Int = c + y + x
// normalDef: normalDef[](val c: Int)(val x: Int,val y: Int) => Int
// now you can "partially apply" this "curried" function to your partially applied function
val addTo10PartiallyApplied = normalDef(10) _
// addTo10PartiallyApplied: (Int, Int) => Int = $Lambda40/1924827254@46202553
val total = addTo10PartiallyApplied(1, 2)
// total: Int = 13