Biến String
Kiểu dữ liệu String được thiết kế để tạo thuận lợi cho người lập trình khi xử lý các xâu kí tự. Kiểu String hỗ trợ các toán tử sau:
1. Phép gán (=)
String text; text = "abc";
Phép gán cũng có thể thực hiện ngay khi khai báo biến
String text = "abc";
2. Phép cộng (+)
Kiểu String trong Fuzzy không chỉ là một đối tượng mà nó được quản lý ở mức chương trình dịch. Chúng ta có thể viết
String text = "abc" + "def";
Điều đó không thể thực hiện được đối với các đối tượng xâu kí tự trong C++ vì không thể cộng hai hằng xâu.
3. Phép gán tự cộng (+=)
String text = "abc"; text += "def";
4. Các phép so sánh bằng nhau (==), khác nhau (!=), lớn hơn (>), nhỏ hơn (<), lớn hơn hoặc bằng (>=), nhỏ hơn hoặc bằng (<=)
String text1 = "abc", text2 = "abcd", msg; msg = "text1 is "; if (text1 > text2) msg += "greater than"; else if (text1 < text2) msg += "less than"; else msg += "equal to"; msg += " text2"; print msg;
Ngoài ra, một biến String có thể nhận giá trị logic, là true nếu không rỗng, là false nếu rỗng
if (text1) print text1;
Phép gán dưới khía cạnh ngôn ngữ
Phép gán thông thường được thực hiện như một lệnh, nhưng đôi khi nó có vai trò của một biểu thức
String text1, text2; text1 = text2 = "abc";
Trong qui tắc của ngôn ngữ lập trình nói chung, phép gán được thực hiện từ bên phải sang. Đầu tiên giá trị “abc” được gán cho biến text2. Phép gán này không chỉ thực hiện lệnh gán mà nó còn phải trả về một giá trị, do đó nó có vai trò của một biểu thức. Sau đó giá trị biểu thức được gán sang biến text1.
Phép gán cũng có thể là một biểu thức điều kiện
if (text1 = text2) print text1;
text1 được gán từ text2 và lệnh `print text1;’ chỉ thực hiện nếu text2 không rỗng.
Nếu các toán hạng là các biến cấu trúc do bạn tự định nghĩa thì phép gán mặc định sẽ được thực hiện đầy đủ đối với các biến cùng kiểu. Rõ hơn là, các biến thành phần của các biến cấu trúc sẽ được gán sang nhau đầy đủ, kể cả có biến mảng. Điều đó cũng có nghĩa là nếu bạn có các biến mảng riêng lẻ cùng kiểu và cùng số phần tử thì chúng có thể gán sang nhau được. Ví dụ
struct OBJECT { int m_i; String m_string; Number m_array[10]; }; OBJECT obj1, obj2; obj1.m_array[0] = 100; obj2 = obj1; print obj2.m_array[0]; OBJECT obj_array1[100], obj_array2[100]; obj_array1[0].m_string = "abc"; obj_array2 = obj_array1; print obj_array2[0].m_string;
Nếu bạn viết chồng phép gán thì hàm toán tử gán của bạn sẽ được gọi thay cho phép gán mặc định nhưng chương trình dịch sẽ thực hiện rồi trả về đối tượng mà không lấy giá trị trả về từ hàm toán tử. Chính vì vậy chúng ta có thể khai báo hàm toán tử gán có kiểu trả về là void, dù phép gán là một biểu thức.
struct OBJECT { int m_i; String m_string; Number m_array[10]; void operator = (OBJECT t) { m_i = t.m_i; } void operator = (int i) { m_i = i; } }; OBJECT obj1, obj2; obj1 = obj2 = 5; print obj1.m_i;Share on Twitter Share on Facebook Share on Linked In
Contact: tuyen@omarine.org
Comments
There are currently no comments
New Comment