Điều này sẽ nhanh chóng đến một chuyên gia, nhưng tôi khá mới trong việc xác định các chức năng với các tùy chọn. Dưới đây là một sơ đồ về những gì tôi đã cố gắng, tôi sẽ giải thích sau khi hiển thị mã:Sự cố khi chuyển các tùy chọn trong các chức năng lô chuyên dụng cho Mathematica
MyPlotFunction[params_, optionalparameter_List:{1,2,3}, opts:OptionsPattern[]]:=
Plot [ stuff, {x,0,1}, [email protected][{opts},[email protected]]];
Options[MyPlotFunction] = { PlotRange->{-5,5}, Frame->True, ... other plot options};
Có bốn sự tinh tế nhẹ:
- Tôi có một tham số tùy chọn trong chức năng của tôi mà cần phải là một danh sách các số nguyên.
- Tôi muốn khả năng gọi hàm bằng bất kỳ tùy chọn Lô đất nào, đặc biệt là sử dụng các giá trị khác với các giá trị mặc định được chỉ định trong dòng thứ ba.
- Tôi muốn có các giá trị mặc định cho một số tùy chọn.
- Tôi có khả năng muốn đặt các tùy chọn khác trong hàm, do đó, không đảm bảo rằng tất cả các tùy chọn sẽ được chuyển đến lô.
Nhưng những gì tôi có ở trên không có tác dụng. Các tùy chọn mặc định tôi đặt sẽ bị bỏ qua, nhưng chúng xuất hiện trong thông tin ??MyPlotFunction
cho chức năng của tôi. Tôi sẽ đưa ra các ví dụ nếu các bạn không thể phát hiện lỗi.
Edit: ví dụ đó không làm việc:
SimplePlot[t_,opts:OptionsPattern[{PlotRange->{-4,4},Frame->True}]]:= Plot[2x+t,{x,0,1},opts];
Thất bại, tùy chọn mặc định sẽ được bỏ qua.SimplePlot[t_,opts:OptionPattern[]]:= Plot[2x+t],{x,0,1},opts]; Options[SimplePlot] = {PlotRange->{-4,4},Frame->True};
Không, tùy chọn mặc định bị bỏ qua.SimplePlot[t_,opts__:{PlotRange->{-4,4},Frame->True}]:= Plot[2x+t,{x,0,1},opts];
Tùy chọn mặc định hoạt động với cuộc gọi trống, nhưng nếu một trong các tùy chọn này hoặc bất kỳ tùy chọn lô đất nào khác bị ghi đè, các giá trị mặc định còn lại sẽ bị mất.
Bạn có thể chỉnh sửa này với chi tiết hơn. Là params những thứ bạn đang âm mưu? Nếu vậy thì đặt nó làm đối số cho cốt truyện. Nếu không thì nó sẽ đi đâu? Nó cũng có thể giúp đỡ nếu bạn giải thích những gì các tham số tùy chọn là nghĩa vụ phải làm. Hàm của bạn không đóng "]" nhưng tôi cho rằng đây là lỗi cắt và dán. Bạn sẽ tìm thấy các cuộc thảo luận khác ở đây và Mathgroup về OptionValue, FilterRules và như vậy sẽ giúp bạn sử dụng các tùy chọn. –