3

我需要定义一个纯函数,它接受两个参数并返回它们的商。如果除数是0那么我想返回0

如果我有一个命名函数,那么我会做

div[_, 0]   := 0
div[x_, y_] := x / y

如何对纯函数中的参数进行相同类型的模式匹配#1 / #2 &

4

3 回答 3

4

尝试类似的东西

If[#2 == 0, 0, #1/#2] &

为您的纯功能。

于 2015-06-12T17:39:25.417 回答
2

Switch可能有用,例如:

Switch[ # ,
       _String , StringLength[#] ,
       _List , Length[#] , 
       __ , Null ] & /@ { "abc", {1, 2, 3, 4}, Pi}

{3, 4, 空}

于 2015-06-15T13:27:46.350 回答
1

可以使用 和 的组合ReplaceCondition纯函数的参数上实现类似的模式匹配

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找到

于 2016-05-01T18:41:56.200 回答