summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--lib/prime.rb30
2 files changed, 19 insertions, 16 deletions
diff --git a/ChangeLog b/ChangeLog
index ef60876f26..8a161187d5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Thu Dec 11 05:37:52 2014 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/prime.rb: Remove useless loop and block capture.
+ See [#10354]
+
Thu Dec 11 04:27:24 2014 Koichi Sasada <ko1@atdot.net>
* vm_core.h: introduce new field
diff --git a/lib/prime.rb b/lib/prime.rb
index ebe012b613..b2b55f1f2e 100644
--- a/lib/prime.rb
+++ b/lib/prime.rb
@@ -272,18 +272,18 @@ class Prime
end
# Iterates the given block for each prime number.
- def each(&block)
- return self.dup unless block
+ def each
+ return self.dup unless block_given?
if @ubound
last_value = nil
loop do
prime = succ
break last_value if prime > @ubound
- last_value = block.call(prime)
+ last_value = yield prime
end
else
loop do
- block.call(succ)
+ yield succ
end
end
end
@@ -350,19 +350,17 @@ class Prime
end
def succ
- loop do
- if (@step)
- @prime += @step
- @step = 6 - @step
- else
- case @prime
- when 1; @prime = 2
- when 2; @prime = 3
- when 3; @prime = 5; @step = 2
- end
+ if (@step)
+ @prime += @step
+ @step = 6 - @step
+ else
+ case @prime
+ when 1; @prime = 2
+ when 2; @prime = 3
+ when 3; @prime = 5; @step = 2
end
- return @prime
end
+ return @prime
end
alias next succ
def rewind
@@ -479,7 +477,7 @@ class Prime
#
# Iterates the given block over all prime numbers. Note that enumeration
# starts from the current position of internal pointer, not rewound.
- def each(&block)
+ def each
return @generator.dup unless block_given?
loop do
yield succ