Self trong ruby (p2)
Bài đăng này đã không được cập nhật trong 6 năm
Self trong ruby (p1): https://viblo.asia/p/self-trong-rubyp1-ORNZqP7GK0n.
Chào các bạn, trong phần trước mình đã giới thiệu về sender và receiver trong ruby, hôm nay chúng ta sẽ cùng tiếp tục tìm hiểu về self và cách giá trị của self thay đổi khi chương trình được thực thi nhé.
- Đầu tiên chúng ta sẽ khai báo 1 class Car với phương thức drive như thế này:
- Chúng ta có thể khởi tạo ra 1 đối tượng của class
Car
và gửi 1message
đến đối tượngcar
mà chúng ta vừa tạo - Chúng ta sẽ có:
- Khá là đơn giản đúng không, nhưng đó không phải cái mình muốn nói tới ở đây, hãy cùng tìm hiểu sâu hơn chút nữa nhé
1. self
trước khi message
được gửi đi
- Hãy cùng xem giá trị của
self
trước khi chúng ta gửimessage
đến đối tượngcar
nhé. Thêm dòng này vào cái đã - Dòng trên sẽ in ra:
- Vì chúng ta đang ở top level, mình cũng đã giải thích ở bài trước ruby sẽ tự sinh ra một đối tượng main làm sender ở top level nên trong trường hợp này self sẽ trỏ đến main, khá là dễ hiểu đúng không.
2. self
khi message
được gửi đi
- Thử đoán xem khi
message
được gửi đi thìself
có giá trị là gì nào - Nếu bạn đoán
self
chính là đối tượngcar
mà chúng ta đã tạo thì chúc mừng bạn đã đoán đúng rồi đó, kiến thức về ruby của bạn không tồi đâu . Đã có trước khi gửi và trong khi gửi, cuối cùng hãy cùng xem sau khi gửi thìself
sẽ có hình thù ra sao nào.
3. self
sau khi message
được gửi đi
- Hãy cùng thay đổi lại thứ tự dòng lệnh 1 chút
- Chúng ta sẽ có
- Bất ngờ chưa (đùa đấy ),
self
lại quay trở về giá trịmain
như ban đầu, nếu bạn có hơi hoang mang thì cũng đừng lo lắng quá, thực ra đây là cơ chế củaruby
,self
trongruby
sẽ luôn thay đổi giá trị của nó, không bao giờ giữ nguyên 1 giá trị hay nói cách khác giá trị của nó rất linh động để phù hợp với ngữ cảnh.
4. Tổng kết
- Vậy là hôm nay mình đã giới thiệu với các bạn tính linh động của
self
trong ruby, mình hi vọng qua bài viết này các bạn sẽ hiểu thêm được thêm về ngôn ngữruby
để có 1 cái nhìn đúng đắn hơn vềruby
cũng như áp dụng được nó trong công việc, nếu yêu thích bài viết này thì hãy nhấn nút up vote ở góc trái nhé, cảm ơn vì đã dành thời gian đọc bài viết của mình. - Bài viết có sử dụng tư liệu trong cuốn sách Ruby Basic của tác giả Bala Paranj
All rights reserved