纯函数中的模式匹配
pattern matching in pure functions
我需要定义一个纯函数,它接受两个参数和 return 它们的商。如果除数是 0
那么我想 return 0
.
如果我有一个命名函数那么我会做
div[_, 0] := 0
div[x_, y_] := x / y
如何对纯函数中的参数进行相同类型的模式匹配#1 / #2 &
?
试试
If[#2 == 0, 0, #1/#2] &
为了你的纯函数。
Switch
可能有用,例如:
Switch[ # ,
_String , StringLength[#] ,
_List , Length[#] ,
__ , Null ] & /@ { "abc", {1, 2, 3, 4}, Pi}
{3, 4, Null}
可以使用 Replace
and Condition
的组合来实现对纯函数参数的类似模式匹配
Replace[_, {_ /; #2 == 0 -> 0, _ :> #1/#2}] &
例如
Replace[_, {_ /; #2 == 0 -> 0, _ :> #1/#2}] &[a, 2]
a/2
和
Replace[_, {_ /; #2 == 0 -> 0, _ :> #1/#2}] &[a, 0]
0
可以在 https://mathematica.stackexchange.com/questions/3174/using-patterns-in-pure-functions
找到更多方法和更广泛的讨论
我需要定义一个纯函数,它接受两个参数和 return 它们的商。如果除数是 0
那么我想 return 0
.
如果我有一个命名函数那么我会做
div[_, 0] := 0
div[x_, y_] := x / y
如何对纯函数中的参数进行相同类型的模式匹配#1 / #2 &
?
试试
If[#2 == 0, 0, #1/#2] &
为了你的纯函数。
Switch
可能有用,例如:
Switch[ # ,
_String , StringLength[#] ,
_List , Length[#] ,
__ , Null ] & /@ { "abc", {1, 2, 3, 4}, Pi}
{3, 4, Null}
可以使用 Replace
and Condition
的组合来实现对纯函数参数的类似模式匹配
Replace[_, {_ /; #2 == 0 -> 0, _ :> #1/#2}] &
例如
Replace[_, {_ /; #2 == 0 -> 0, _ :> #1/#2}] &[a, 2]
a/2
和
Replace[_, {_ /; #2 == 0 -> 0, _ :> #1/#2}] &[a, 0]
0
可以在 https://mathematica.stackexchange.com/questions/3174/using-patterns-in-pure-functions
找到更多方法和更广泛的讨论