如何在 J 中编写具有 3 个以上参数的函数?
How to write a function with more than 3 parameters in J?
比如函数g=(x-y)/(x-z)怎么写?
我知道如何用 2 个参数编写函数。
一种方法是使用变量匹配:
f =: 3 : 0
'x y z' =. y
(x-y)%(x-z)
)
f 1; 2; 3
0.5
f 1 2 3
0.5
f 1.5; 2; 0.5
_0.5
另一种方法是将变量视为数组 v
-> x y z
并将函数定义为一系列数组操作。例如:
- 乘加
+/
1 _1 0
* x y z
,
- 乘加
+/
1 0 _1
* x y z
,
- 划分
%/
这可以写成:
g =: 3 :'%/ F (+/ . *) y'
F 在哪里
1 _1 0
1 0 _1
:
g 1 2 3
0.5
g 1.5 2 0.5
_0.5
你可以走得太远写:
h =: 3 : '((0{y) - (1{y)) % ((0{y) - (2{y))'
但你可能不应该这样做。
比如函数g=(x-y)/(x-z)怎么写? 我知道如何用 2 个参数编写函数。
一种方法是使用变量匹配:
f =: 3 : 0
'x y z' =. y
(x-y)%(x-z)
)
f 1; 2; 3
0.5
f 1 2 3
0.5
f 1.5; 2; 0.5
_0.5
另一种方法是将变量视为数组 v
-> x y z
并将函数定义为一系列数组操作。例如:
- 乘加
+/
1 _1 0
*x y z
, - 乘加
+/
1 0 _1
*x y z
, - 划分
%/
这可以写成:
g =: 3 :'%/ F (+/ . *) y'
F 在哪里
1 _1 0
1 0 _1
:
g 1 2 3
0.5
g 1.5 2 0.5
_0.5
你可以走得太远写:
h =: 3 : '((0{y) - (1{y)) % ((0{y) - (2{y))'
但你可能不应该这样做。