Bug #9762

keywork argument do not work in some situation

Added by felix chang 12 months ago. Updated 10 months ago.

[ruby-core:62108]
Status:Rejected
Priority:Normal
Assignee:-
ruby -v:ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-linux] Backport:2.0.0: UNKNOWN, 2.1: UNKNOWN

Description

I dont know this is an issue or not. Here is my code.


class String
def last(size)
self[-size..-1]
end
# The behavior of slideing is similar to Array#each_cons
# It's very use for most biological sequence analysis,
# for example, calculating the k-mer frequency
#
# For example:
# 'abcdefghij'.sliding(2).to_a
# => ['ab', 'bc', 'cd', 'de', 'ef', 'fg', 'gh', 'hi', 'ij']
def sliding(window, circle: false)
return to_enum(__method__, window, circle) unless block_given?
seq = circle ? self + last(window) : self
(seq.size - window + 1).times do |i|
yield seq.slice(i, window)
end
end
end

It will not work, but if i change the code to the following:

def sliding(window, circle = false)

And it works!

History

#1 Updated by Matthew Kerwin 12 months ago

felix chang wrote:

I dont know this is an issue or not. Here is my code.

[...]

It will not work, but if i change the code to the following:

def sliding(window, circle = false)

And it works!

How will it "not work"? Are you calling it properly?

I'd change the first line of #sliding to:

return to_enum(__method__, window, {circle: circle}) unless block_given?

and fix all the other calls, from e.g. sliding 5, true to sliding 5, circle: true

Does that solve your issue?

#2 Updated by felix chang 12 months ago

Yes!

Thank you.

#3 Updated by Benoit Daloze 12 months ago

  • Status changed from Open to Closed

#4 Updated by Usaku NAKAMURA 10 months ago

  • Status changed from Closed to Rejected

Also available in: Atom PDF