Có cách nào để tách sổ ghi chép Mathematica mở để chúng không chia sẻ bất kỳ biến nào không? Làm thế nào để làm cho nó như vậy một số biến được chia sẻ nhưng không phải tất cả?Mathematica - Tách Máy tính xách tay
Trả lời
Có, có. Tôi khuyên bạn nên đọc tài liệu liên quan đến ngữ cảnh Mathematica. Tóm lại, tất cả các biến thuộc về một số bối cảnh (không gian tên), và tất cả các biến có thể được truy cập thông qua tên đầy đủ của họ có dạng "ContextName`varName". Nếu bạn chỉ sử dụng "varName", Mathematica sẽ tìm kiếm các ngữ cảnh trong $ContextPath
(thử đánh giá biến số $ContextPath
để xem nó là gì), và sẽ sử dụng ngữ cảnh đầu tiên mà nó tìm thấy biến đó. Ngoài ra, mỗi sổ ghi chép chỉ định một ngữ cảnh (được lưu trữ trong biến $Context
) trong đó tất cả các biến của nó được lưu trữ (trừ khi được sử dụng tên đầy đủ).
Theo mặc định, đối với tất cả sổ ghi chép, ngữ cảnh là "Toàn cầu". Cũng theo mặc định, $ ContextPath cho tất cả các sổ ghi chép bao gồm bối cảnh "Toàn cầu" (cũng như "Hệ thống" và một số khác). Kết quả thực là các biến được chia sẻ trên các sổ ghi chép và điều này có thể nhanh chóng trở nên khó chịu. Tuy nhiên, có một giải pháp dễ dàng. Để tạo ra một bối cảnh "riêng" cho một máy tính xách tay, đánh giá như sau:
SetOptions[EvaluationNotebook[], CellContext -> Notebook]
máy tính xách tay này sẽ được gán một bối cảnh duy nhất (đánh giá biến $Context
để xem nó là gì). Ngoài ra, bối cảnh toàn cầu sẽ bị xoá khỏi ContextPath (thử đánh giá $ContextPath
trước và sau khi SetOptions[...]
ở trên để xem những gì đang xảy ra.)
[Cập nhật: Như đã chỉ ra bởi rcollyer trên mới Mathematica chồng trao đổi, thiết lập này tùy chọn làm mặc định cho sổ ghi chép mới, hãy làm như sau: mở Thanh tra Tuỳ chọn (Ctrl + Shift + O), thay đổi phạm vi (trong trình đơn thả xuống ở trên cùng) từ "Lựa chọn" thành "Tùy chọn Toàn cầu"; bên trái mở rộng lựa chọn các nút di động -> Options đánh giá, và thay đổi các thiết lập để CellContext]
Bây giờ, đây là cách để tạo ra một bối cảnh chia sẻ "Máy tính xách tay.":
Begin["SharedContext`"];
varShared1 = "Shared string";
End[];
Ngoài ra, bạn có thể' tôi vừa gõ
SharedContext`varShared1 = "Shared string";
Bây giờ bạn có thể sử dụng tên đầy đủ ("SharedContext`varShared1" sẽ làm việc trong bất kỳ máy tính xách tay), hoặc bạn có thể thêm bối cảnh đến $ ContextPath:
AppendTo[$ContextPath, "SharedContext`"]
Nếu bạn làm điều này trong tất cả sổ ghi chép, varShared1 sẽ hiển thị mà không có tên đủ điều kiện.
Để tóm tắt, ngữ cảnh hoạt động giống như nhiều đường dẫn tìm kiếm khác. Tuy nhiên, có rất nhiều sự tinh tế (ví dụ, nếu một biểu tượng đã được xác định trong một số ngữ cảnh khác, khối Bắt đầu ["SharedContext`"]/End [] có thể không hoạt động như bạn mong đợi - ngữ cảnh hiện tại của biểu tượng sẽ được sử dụng thay vì SharedContext`), vì vậy tôi khuyên bạn nên sử dụng liều thử nghiệm lành mạnh và xem xét các tài liệu.
Tôi không thực sự chắc chắn nếu đây là một điều khôn ngoan để làm, nhưng dù sao.
Đây là giải pháp sơ đồ cho hai Sổ tay. Nó có thể được khái quát hóa, nhưng nó không đơn giản.
mở hai máy tính xách tay
Trong mỗi trong số họ đi vào menu (đánh giá -> mặc định bối cảnh Notebook của -> Duy nhất Máy tính xách tay này) Với điều này, những biểu tượng không được chia sẻ nữa.
Trong mỗi Máy tính xách tay nhập cái gì đó như
Context[]
để có được những tính xách tay ContextBây giờ trong mỗi Máy tính xách tay nhập mã sau
.
Needs["Experimental`"];
SetAttributes[f, HoldFirst];
f[s_, val_] := [email protected]["Notebook$$17$799580`",
[email protected]@s, "=", [email protected]];
ValueFunction[t] = f
Trường hợp Notebook$$17$799580
là bối cảnh của máy tính xách tay KHÁC (điều này sẽ có thể có được "tự động", nhưng đây là một bằng chứng về chỉ khái niệm.
Bây giờ khi bạn muốn chia sẻ một biểu tượng nhập
f[symbolToShare]
Vậy là xong.
Bạn có thể chia sẻ các giá trị hai chiều, hoặc chỉ theo một hướng, đi vào f [x] duy nhất trong Máy tính xách tay y bạn muốn làm giá trị nguồn cho x. Máy tính xách tay khác sẽ nhận được giá trị cập nhật, nhưng nó sẽ không cập nhật lại.
HTH!
Sửa
Hướng tới tự động hóa:
Bạn có thể nhận được tất cả các bối cảnh mở Máy tính xách tay khác để cập nhật biểu tượng chung của bạn như:
ctxs[]:= Complement[Contexts["Notebook$$*"],
[email protected][{Context[]},
StringCases[Contexts["Notebook$$*"], __ ~~ "Private" ~~ __]]]
Vì vậy, bạn e sẽ trở thành một cái gì đó như thế này (không thử nghiệm)
f[s_, val_] := [email protected][#,
[email protected]@s, "=", [email protected]]&/@ctxs[];
Để cung cấp cho tất cả các máy tính xách tay bối cảnh độc đáo mở Tùy chọn Inspector và thiết lập di động Tùy chọn → Tùy chọn đánh giá → Bối cảnh di-Notebook
.
- 1. Máy tính xách tay IPython trên Heroku
- 2. Mathematica, các chức năng gọi từ một máy tính xách tay khác
- 3. mathematica bắt đầu giao diện người dùng và đánh máy tính xách tay từ dòng lệnh
- 4. Chạy trình xem Máy tính xách tay IPython cục bộ
- 5. matplotlib.widget không hoạt động trong máy tính xách tay ipython
- 6. Đồ thị động trong máy tính xách tay ipython
- 7. Máy tính xách tay IPython Sympy Math Rendering
- 8. usepackage và làm macro trong máy tính xách tay ipython
- 9. sử dụng rpy2 với máy tính xách tay IPython?
- 10. Ipython: Gỡ lỗi mã bên trong máy tính xách tay
- 11. Máy tính xách tay GTK (Glade) của Python
- 12. Chặn phím Fn trên máy tính xách tay
- 13. tương đương raw_input trong máy tính xách tay Ipython
- 14. Có một máy tính xách tay IPython api?
- 15. Lỗi Pyzmq trong Máy tính xách tay IPython
- 16. Xách tay erlang
- 17. Làm cách nào để ngăn chặn pin máy tính xách tay khỏi tính phí
- 18. Làm thế nào để kiểm tra loại máy? máy tính xách tay hoặc máy tính để bàn?
- 19. sáng bóng với R xách tay?
- 20. Thật sự xách tay Git
- 21. Chúng tôi có thể phát hiện mức pin máy tính xách tay sử dụng .net không?
- 22. Tìm tab hiện đang được chọn của Máy tính xách tay Ttk
- 23. Cách xuất số liệu vào các tệp từ Máy tính xách tay IPython
- 24. Heap tham nhũng nhưng chỉ khi biên soạn trên máy tính xách tay
- 25. Buộc NVIDIA GPU lập trình trong máy tính xách tay Optimus
- 26. C#: Cách ngăn máy tính xách tay truy cập Stand-By
- 27. Truy cập máy tính xách tay Bộ điều khiển quạt nhúng có lập trình?
- 28. Lô đất - Sử dụng ggplot2 trong máy tính xách tay IPython (qua rmagic)
- 29. Java đa luồng trong một máy tính xách tay có bộ vi xử lý quad-core
- 30. Nó có thể phục vụ một máy tính xách tay IPython từ PythonAnywhere
Đúng. Tốt hơn tôi nhiều. Đang xóa. –
Bạn cũng có thể thiết lập điều này thông qua trình đơn Đánh giá> Trình đơn ngữ cảnh mặc định của Notebook (thay vì SetOptions.) [Tài liệu sử dụng cài đặt "Duy nhất cho mỗi nhóm ô" để không có bất kỳ xung đột nào.] –
Câu hỏi tiếp theo: có anyway để làm cho Mathematica thiết lập bối cảnh của sổ ghi chép mới để được tư nhân theo mặc định, thay vì phải tạo ra một bối cảnh riêng cho mỗi sổ tay mới bằng tay? – Joe