cuốn sách gpt4 ai đã làm

logic 'Đầu tiên và nghỉ ngơi' của Ruby

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-03 18:26:23 28 4
mua khóa gpt4 Nike

Ứng dụng của tôi đã đạt đến điểm mà tôi phải bắt đầu tối ưu hóa hiệu suất. Tôi đã đăng một số mã mà tôi nghĩ có thể được cải thiện.

Trong Chế độ xem, tôi xử lý mục đầu tiên trong chỉ mục theo một cách và các mục còn lại theo cách khác. Mỗi lần nó lặp lại một mục mới, nó sẽ được kiểm tra (Ruby tự hỏi... mục này có chỉ số 0 không?)

Tôi nghĩ nếu tôi có thể làm điều đó bằng cách sử dụng Index.first? Ngăn chặn hành vi này bằng cách xử lý mục đầu tiên một cách đặc biệt và xử lý các mục khác theo cách khác (thậm chí không kiểm tra xem chúng có chỉ mục hay không, tôi cảm thấy hiệu suất có thể được cải thiện về 0) Làm cách nào để thực hiện việc này?

  <% @links.each_with_index do |link, chỉ mục %>
<% nếu link.points == 0 thì @points = "?" else @points = link.points %>
<% end %>
<% nếu chỉ số == 0 thì %>

Mục đầu tiên


<% khác %>

Mọi thứ khác


<% end %>
<% end %>
<% end %>

câu trả lời hay nhất

Bạn có thể làm điều này không phá hủy như thế này:

đầu tiên, *rest = *my_array
# Làm điều gì đó với 'đầu tiên'
còn lại.mỗi{ |item| … }

…TRONG Đầu tiên sẽ là phần tử đầu tiên (hoặc không nếu my_array trống) và nghỉ ngơi Sẽ luôn là một mảng (có thể trống).

Bạn có thể nhận được kết quả tương tự dễ dàng hơn nếu bạn có thể sửa đổi mảng:

# xóa phần tử đầu tiên khỏi mảng và trả về nó
đầu tiên = my_array.shift
# làm gì đó với 'đầu tiên'
my_array.each{ |item| … }

Tuy nhiên, điều này chỉ làm sạch mã của bạn; nó không tạo ra sự khác biệt về hiệu suất có thể đo lường được.

Về logic 'First and Rest' của Ruby, chúng tôi tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/10373963/

28 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress