Project

General

Profile

Actions

Bug #6476

closed

Proc unrolls an array even without splat

Added by prijutme4ty (Ilya Vorontsov) almost 12 years ago. Updated almost 12 years ago.

Status:
Rejected
Assignee:
-
Target version:
-
ruby -v:
1.9.3p194
Backport:
[ruby-core:45176]

Description

Normal behaviour:

def pr_def(recv,args)
puts "#{recv.inspect} + #{args.inspect}"
end
pr_def(
[1,2,3]) # => [1] + [2,3]
pr_def([1,2,3]) # => [1,2,3] + []
pr_def([[1,2,3]]) # => [[1,2,3]] + []

pr_lambda = lambda{|recv,args| puts "#{recv.inspect} + #{args.inspect}"}
pr_lambda.call(
[1,2,3]) # => [1] + [2,3]
pr_lambda.call([1,2,3]) # => [1,2,3] + []
pr_lambda.call([[1,2,3]]) # => [[1,2,3]] + []

But Proc acts in a different way.

pr_proc = Proc.new{|recv,args| puts "#{recv.inspect} + #{args.inspect}"}
pr_proc.call(
[1,2,3]) # => 1 + [2,3]
pr_proc.call([1,2,3]) # => 1 + [2,3]
pr_proc.call([[1,2,3]]) # => [1,2,3] + []

Is it right behaviour or such unsplatting is a bug?

Actions

Also available in: Atom PDF

Like0
Like0Like0