data = {1, 2, 3, 4};
data1 = {2, 1, 4, 3};
ClearAll[exprShowAndEvaluate];
SetAttributes[exprShowAndEvaluate, {HoldAll, Listable}];
exprShowAndEvaluate[expr_] := Print[HoldForm[expr], "=", expr];
exprShowAndEvaluate[{Min[data],
Max[data],
Covariance[data, data1],
Mean[data],
GeometricMean[data],
Total[data],
Sum[Log[data[[i]]], {i, 1, Length[data]}],
Sum[(data[[i]])^2, {i, 1, Length[data]}]}];
(* output ==>
*)
Cập nhật
Trong bình luận của ông dưới đây Usavich, cho biết ông muốn vượt qua một danh sách các biểu thức gán cho một biến đến chức năng. Đây không phải là trực tiếp có thể là những biểu hiện đánh giá trong quá trình này:
expr =
{
Min[data], Max[data], Covariance[data, data1], Mean[data],
GeometricMean[data], Total[data],
Sum[Log[data[[i]]], {i, 1, Length[data]}],
Sum[(data[[i]])^2, {i, 1, Length[data]}]
}
(* Output ==>
{1, 4, 1, 5/2, 2^(3/4) 3^(1/4), 10, Log[2] + Log[3] + Log[4], 30}
*)
Bạn phải Hold
danh sách biểu trước khi gán:
expr =
Hold[
{
Min[data], Max[data], Covariance[data, data1], Mean[data],
GeometricMean[data], Total[data],
Sum[Log[data[[i]]], {i, 1, Length[data]}],
Sum[(data[[i]])^2, {i, 1, Length[data]}]
}
]
Với một phiên bản mới của exprShowAndEvaluate chúng ta có thể quy trình expr:
ClearAll[exprShowAndEvaluate];
exprShowAndEvaluate[expr_Hold] :=
Module[{tempExpr},
tempExpr = ReleaseHold[Map[HoldForm, expr, {2}]];
Print[#1, "=", ReleaseHold[#1]] & /@ tempExpr
];
Chức năng bây giờ có thể được gọi với danh sách tổ chức:
exprShowAndEvaluate[expr]
Kết quả như trước.
Hoạt động tốt, nhưng khi gán các biểu thức cho một danh sách, nó không hoạt động nữa. '' expr = {Min [dữ liệu], Max [dữ liệu]}; '' '' exprShowAndEvaluate [expr]; '' –
Tôi nghĩ bạn sẽ phải sử dụng 'exprShowAndEvaluate [expr = {Min [data], Max [ dữ liệu]}] '. –
@Usavich Đó là vì danh sách của bạn không chứa các biểu thức gốc nữa. –