Tôi có mục tiêu tạo ra phần mềm kế toán đơn giản nhất cho Mac và Windows để giúp các doanh nghiệp nhỏ ở Canada
Điều này đã dẫn tôi đến 2 năm dài khám phá ngôn ngữ tốt nhất có thể cung cấp các tính năng này
- Năng suất tổng thể tuyệt vời
- Sử dụng rộng rãi trên toàn thế giới để đảm bảo tính bền vững lâu dài và dễ tìm tài liệu
- Tính linh hoạt để tạo trang web và phần mềm máy tính để bàn
- Trải nghiệm nhà phát triển thú vị
- Khả năng tạo giao diện người dùng hiện đại ưa nhìn
- Cơ hội việc làm với ngôn ngữ này
Tôi đã thử Python, Java, C# và C++ mà không tìm thấy thứ tôi đang tìm kiếm
Khi tôi phát hiện ra Javascript, tôi thực sự biết đó là ngôn ngữ phù hợp để sử dụng. Nghĩ về điều này ngày hôm nay khiến tôi càng nhận ra quyết định tuyệt vời như thế nào khi học, sử dụng và thành thạo Javascript. Đó là một con đường thú vị, đầy thử thách và hiệu quả mà tôi vẫn hài lòng
Rõ ràng khi nhắc đến Javascript không phải không ám chỉ hệ sinh thái rộng lớn xung quanh nó. Đối với tôi, JS là cả một vũ trụ trong đó hầu hết mọi công cụ có thể tưởng tượng đều tồn tại. Thật tuyệt vời - thực tế. Cảm ơn tất cả những người đóng góp đã làm cho nó có thể
Để rõ ràng hơn về mức độ mãnh liệt của tôi với Javascript, hãy nói rằng niềm đam mê đầu tiên của tôi là âm nhạc. Cho đến khi, tôi tìm thấy mã hóa bằng Javascript. Vâng tôi biết
Vì vậy, cuối cùng, tôi đã chọn Javascript vì nó linh hoạt, thú vị, được sử dụng rộng rãi, hiệu quả cho cả phần mềm máy tính để bàn và trang web với khả năng tạo giao diện người dùng đẹp mắt hiện đại [giả sử có liên quan đến HTML và CSS] và cuối cùng là có cơ hội việc làm
Các lớp MATLAB có thể định nghĩa các thuộc tính chung, mà bạn có thể sửa đổi các thuộc tính này bằng cách gán rõ ràng các giá trị cho các thuộc tính đó trên một thể hiện nhất định của lớp. Tuy nhiên, chỉ các lớp bắt nguồn từ lớp
obj = SimpleClass['red'];6 mới thể hiện hành vi tham chiếu. Sửa đổi một giá trị thuộc tính trên một thể hiện của một lớp giá trị [các lớp không bắt nguồn từ
obj = SimpleClass['red'];6], chỉ thay đổi giá trị trong ngữ cảnh thực hiện sửa đổi
Các phần tiếp theo mô tả hành vi này chi tiết hơn
Các đối tượng được truyền cho hàm
MATLAB chuyển tất cả các biến theo giá trị. Khi bạn truyền một đối tượng vào một hàm, MATLAB sẽ sao chép giá trị từ hàm gọi vào biến tham số trong hàm được gọi
Tuy nhiên, MATLAB hỗ trợ hai loại lớp hoạt động khác nhau khi sao chép
Các lớp xử lý - một biến thể hiện của lớp xử lý đề cập đến một đối tượng. Một bản sao của biến thể hiện của lớp xử lý đề cập đến cùng một đối tượng như biến ban đầu. Nếu một hàm sửa đổi một đối tượng điều khiển được truyền dưới dạng đối số đầu vào, thì việc sửa đổi sẽ ảnh hưởng đến đối tượng được tham chiếu bởi cả điều khiển ban đầu và điều khiển được sao chép
Các lớp giá trị — dữ liệu thuộc tính trong một thể hiện của một lớp giá trị độc lập với dữ liệu thuộc tính trong các bản sao của thể hiện đó [mặc dù, một thuộc tính của lớp giá trị có thể chứa một núm điều khiển]. Một hàm có thể sửa đổi một đối tượng giá trị được truyền dưới dạng đối số đầu vào, nhưng việc sửa đổi này không ảnh hưởng đến đối tượng ban đầu
Xem So sánh các lớp Xử lý và Giá trị để biết thêm thông tin về hành vi và cách sử dụng của cả hai loại lớp
Truyền đối tượng giá trị. Khi bạn truyền một đối tượng giá trị cho một hàm, hàm này sẽ tạo một bản sao cục bộ của biến đối số. Chức năng chỉ có thể sửa đổi bản sao. Nếu bạn muốn sửa đổi đối tượng ban đầu, hãy trả lại đối tượng đã sửa đổi và gán nó cho tên biến ban đầu. Ví dụ, xem xét lớp giá trị,
obj = SimpleClass['red'];0
classdef SimpleClass properties Color end methods function obj = SimpleClass[c] if nargin > 0 obj.Color = c; end end end end
Tạo một thể hiện của
obj = SimpleClass['red'];0, gán giá trị của
obj = SimpleClass['red'];2 cho thuộc tính
obj = SimpleClass['red'];3 của nó
obj = SimpleClass['red'];
Truyền đối tượng cho hàm
obj = SimpleClass['red'];4, hàm này gán
obj = SimpleClass['red'];5 cho thuộc tính
obj = SimpleClass['red'];3
function y = g[x] x.Color = 'blue'; y = x; end
Hàm
obj = SimpleClass['red'];4 sửa đổi bản sao của đối tượng đầu vào và trả về bản sao đó, nhưng không thay đổi đối tượng ban đầu
Nếu hàm
obj = SimpleClass['red'];4 không trả về giá trị, thì việc sửa đổi thuộc tính đối tượng
obj = SimpleClass['red'];3 sẽ chỉ xảy ra trên bản sao của
function y = g[x] x.Color = 'blue'; y = x; end0 trong không gian làm việc của hàm. Bản sao này sẽ nằm ngoài phạm vi khi quá trình thực thi chức năng kết thúc
Ghi đè biến ban đầu thực sự thay thế nó bằng một đối tượng mới
Vượt qua đối tượng xử lý. Khi bạn truyền một giá trị điều khiển cho một hàm, hàm đó sẽ tạo một bản sao của biến điều khiển, giống như khi truyền một đối tượng giá trị. Tuy nhiên, vì bản sao của đối tượng xử lý đề cập đến cùng một đối tượng với đối tượng xử lý ban đầu, nên hàm có thể sửa đổi đối tượng mà không phải trả về đối tượng đã sửa đổi
Ví dụ: giả sử bạn sửa đổi định nghĩa lớp
obj = SimpleClass['red'];0 để tạo một lớp dẫn xuất từ lớp
obj = SimpleClass['red'];6
classdef SimpleClass properties Color end methods function obj = SimpleClass[c] if nargin > 0 obj.Color = c; end end end end5
Tạo một thể hiện của
function y = g[x] x.Color = 'blue'; y = x; end3, gán giá trị của
obj = SimpleClass['red'];2 cho thuộc tính
obj = SimpleClass['red'];3 của nó
classdef SimpleClass properties Color end methods function obj = SimpleClass[c] if nargin > 0 obj.Color = c; end end end end9
Truyền đối tượng cho hàm
obj = SimpleClass['red'];4, hàm này gán
obj = SimpleClass['red'];5 cho thuộc tính
obj = SimpleClass['red'];3
Hàm
obj = SimpleClass['red'];4 đặt thuộc tính
obj = SimpleClass['red'];3 của đối tượng được tham chiếu bởi cả handle trả về và handle ban đầu
Các biến
classdef SimpleClass properties Color end methods function obj = SimpleClass[c] if nargin > 0 obj.Color = c; end end end end51 và
function y = g[x] x.Color = 'blue'; y = x; end0 đề cập đến cùng một đối tượng
obj = SimpleClass['red'];7
Hàm
obj = SimpleClass['red'];4 đã sửa đổi đối tượng được tham chiếu bởi đối số đầu vào [
function y = g[x] x.Color = 'blue'; y = x; end0] và trả về một điều khiển cho đối tượng đó trong
classdef SimpleClass properties Color end methods function obj = SimpleClass[c] if nargin > 0 obj.Color = c; end end end end51
MATLAB Vượt qua các Xử lý theo Giá trị. Một biến xử lý là một tham chiếu đến một đối tượng. MATLAB chuyển tham chiếu này theo giá trị
Xử lý không hoạt động như tài liệu tham khảo trong C++. Nếu bạn chuyển một đối tượng xử lý cho một hàm và hàm đó gán một đối tượng khác cho biến xử lý đó, thì biến trong trình gọi sẽ không bị ảnh hưởng. Ví dụ, giả sử bạn định nghĩa một hàm
classdef SimpleClass properties Color end methods function obj = SimpleClass[c] if nargin > 0 obj.Color = c; end end end end56
obj = SimpleClass['red'];2
Truyền một đối tượng xử lý cho
classdef SimpleClass properties Color end methods function obj = SimpleClass[c] if nargin > 0 obj.Color = c; end end end end56
obj = SimpleClass['red'];4
Hàm ghi đè bộ điều khiển được truyền dưới dạng đối số, nhưng không ghi đè lên đối tượng được gọi bởi bộ điều khiển. Xử lý ban đầu
function y = g[x] x.Color = 'blue'; y = x; end0 vẫn tham chiếu đối tượng ban đầu