This page is READ-ONLY. It is generated from the old site.
All timestamps are relative to 2013 (when this page is generated).
If you are looking for TeX support, please go to VietTUG.org

Một phép gán hay với .send

ruby way
Added by icy [G] about 3 years ago  »  Votes: 2/2

Khi đối tượng OpenSocial được lấy về, nó có các thuộc tính là id, thumbnail_url, display_name. Ta muốn lấy ra các giá trị này nhưng sẽ đặt tên khác cho dễ nhớ và rút gọn việc gõ phím.

Hãy xem cách thực hiện như sau đây, khi ta dùng tới phép gán song song (parallel assignment) và toán tử .send để áp một thuộc tính lên đối tượng. Do hàm .send chỉ chấp nhận kiểu Symbol, ta phải thực hiện ép kiểu.

1 r =  OpenSocial::FetchPersonRequest.new(c)
2 gfc_data = r.send
3 gfc_id, gfc_thumb, gfc_name = %w{id thumbnail_url display_name}.map {|op| gfc_data.send op.to_sym}

Điều này thật đơn giản và dễ hiểu hơn so với các phép gán thông thường (nhất là khi có nhiều thuộc tính phải lấy). Tuy nhiên, khi phải thực hiện thay đổi thì cách ở trên dễ gây nhầm lẫn hơn (vì ta phải đảm bảo thứ tự)

1 gfc_id    = gfc_data[:id]
2 gfc_thumb = gfc_data[:thumbnail_url]
3 gfc_name  = gfc_data[:display_name]

Nếu có quá nhiều thuộc tính, phải nghĩ tới việc dùng các Hasheval để thực hiện ánh xạ.


Comments