Prefer .drop over range slicing
Everyone can contribute. Help move this issue forward while earning points, leveling up and collecting rewards.
Most cases below can be automatically fixed by Performance/ArraySemiInfiniteRangeSlice
Discussions
The following discussions from !76661 (merged) should be addressed:
-
@splattael started a discussion: Suggestion
Is this
last(2)?🤔 _, project_path = PROJECT_URL.split('/').last(2) -
@splattael started a discussion: expected_collection = all_groups.last(2)🤔 -
@splattael started a discussion: Is this equivalent to
.drop(2)?🤔 diff_lines = diffy.diff.scan(/.*\n/).drop(2) -
@splattael started a discussion: Suggestion Because we are inside Rails we could use
String#lastto simplify the logic:iv = token.last(NONCE_SIZE)Note: performance to be verified.
-
@splattael started a discussion: serverless_domain_cluster.uuid.last(2) -
@splattael started a discussion: activity_months: activity_months.drop(1), -
@splattael started a discussion: Thoughts on using Array splatting?
🤔 merge_request, *rest_ = merge_requests add_visibility_level_for_merge_requests(rest)or simply
.drop(1)add_visibility_level_for_merge_requests(merge_requests.drop(1)) -
@splattael started a discussion: add_upvotes_for_issues(issues.drop(1)) -
@splattael started a discussion: add_field_for_objects(objects.drop(1)) -
@splattael started a discussion: diff_content.scan(/.*\n/).drop(2).join('') if diff_content.present?We can probably drop the save operator here because
String#scanalways returns anArray. -
@splattael started a discussion: input = match.split(':').drop(1).join -
@splattael started a discussion: stats.drop(1).each_with_index do |data, index| -
@splattael started a discussion: grouped_subkeys[primary_subkey_id] = raw_key.subkeys.drop(1).map do |s| -
@splattael started a discussion: positions.drop(1).each do |pos| -
@splattael started a discussion: id.partition(best_match).drop(1) -
@splattael started a discussion: node.children.drop(2) -
@splattael started a discussion: node.children.drop(2) -
@splattael started a discussion: expect(subject.sliced_nodes).to contain_exactly(*projects.drop(2)) -
@splattael started a discussion: expect(subject.sliced_nodes).to contain_exactly(*projects.drop(2)) -
@splattael started a discussion: expect(subject.sliced_nodes).to contain_exactly(*projects.drop(2)) -
@splattael started a discussion: expect(subject).to eq(expected.reverse.drop(1)) # removing one item because we used it to calculate cursor data for the "last" page in subject -
@splattael started a discussion: regular_throttles = throttles.keys.drop(2) -
@splattael started a discussion: let(:old_commits) { noteable.commits.drop(3) } -
@splattael started a discussion: result = output.split("\n")[1].split(" ").drop(1)