[Ghi chép] .zip, Time.current vs Time.now, và .methods
Ruby
116
RubyOnRails
40
White

Nguyễn Đức Giang viết ngày 23/05/2015

Thỉnh thoảng trên Ruby Việt Nam chat, hay trong quá trình tìm kiếm mình sẽ gặp được một số vấn đề nhỏ nhỏ, thú vị và có thể hữu dụng nên thường lưu lại (dưới dạng nháp). Từ giờ mình sẽ đưa những ghi chép lẻ tẻ lên đây với chú thích rõ ràng. Vừa là để tra cứu lúc cần thiết và hi vọng sẽ có ích cho mọi người.

Dùng .zip để tạo 1 Hash từ 2 Array một cách ngắn gọn

keys = [:key_1, :key_2, :key_3]
values = [:value_1, :value_2, :value_3]

keys.zip values
=> [[:key_1, :value_1], [:key_2, :value_2], [:key_3, :value_3]]

keys.zip(values).to_h
=> {:key_1=>:value_1, :key_2=>:value_2, :key_3=>:value_3}

Hash[keys.zip(values)]
=> {:key_1=>:value_1, :key_2=>:value_2, :key_3=>:value_3}

Time.currentTime.now

Theo Rails doc: Time.current trả về Time.zone.now khi Time.zone hoặc config.time_zone được thiết lập, nếu không sẽ trả về Time.now.

Lưu ý: Time.now là hàm của Ruby. Time.currentTime.zone do Rails mở rộng.

VD: Khi Time zone được thiết lập bằng "Asia/Tokyo":

Time.now
# => 2015-04-10 09:11:57 +0700
Time.current
# => Fri, 10 Apr 2015 11:12:01 JST +09:00

.methods

.methods.public_methods liệt kê các public methods của 1 object.

Tương tự .private_methods.protected_methods liệt kê các private methods và protected method của 1 object.

Klass.instance_methods liệt kê các public methods (được kế thừa) của 1 object được khởi tạo từ Klass

Thêm argument false khi gọi các hàm trên sẽ lược bỏ các methods được kế thừa trong danh sách trả về .

VD:

s = String.new
# => "" 
s.methods
# => [:<=>, :==, :===, :eql?, :hash, :casecmp, :+, :*, :%, :[], :[]=,..., :__send__, :__id__] 
s.methods == s.public_methods
# => true 
s.methods == String.instance_methods
# => true 
s.methods false
# => []
2.1.0 :018 > def s.something; end
# => :something
s.methods false
# => [:something] 
s.methods == String.instance_methods
# => false 
Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Nguyễn Đức Giang

4 bài viết.
26 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
42 5
Đây là bản dịch bài viết (Link) của (Link) thực hiện bởi (Link). Tại sao mọi người đều vội vã như vậy? Bước vào một cửa hàng sách bất kì, bạn sẽ...
Nguyễn Đức Giang viết hơn 3 năm trước
42 5
White
36 7
Đây là bản dịch bài viết (Link) của (Link) thực hiện bởi (Link). Tôi tốt ngiệp với bằng "minor" Khoa học Máy tính (KHMT) từ đại học Virginia (UVa)...
Nguyễn Đức Giang viết hơn 3 năm trước
36 7
White
9 5
Theo lời khuyên của anh Trung, mình sẽ cập nhật lại bài viết này trong thời gian gần, giải thích một cách rõ ràng hơn tại sao lại có các hàm .blank...
Nguyễn Đức Giang viết hơn 3 năm trước
9 5
Bài viết liên quan
White
8 6
Chưa xem phần 2? Xem (Link) Trong bài viết này tôi giới thiệu cho các bạn về khái niệm function arity, một cách gọi mĩ miều của số lượng argument ...
Lơi Rệ viết 3 năm trước
8 6
White
8 1
Tiếp theo (Link) Mình sẽ hướng dẫn cách test căn bản cho API mình tạo. Thật ra mà nói thì mình phải viết test trước khi làm nhưng mà để tránh việc...
My Mai viết hơn 3 năm trước
8 1
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
4 bài viết.
26 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!