page 357, in the first users.map
, convert_to_json
is sent to self
instead of user
:
users.map { |user| convert_to_json }
users.map { _1.convert_to_json }
users.map(&:convert_to_json)
The second users.map
has _1
as receiver, the third has one element of users
as implicit receiver.
So the first should be users.map { |user| user.convert_to_json }
.
users = %w|a b c|
public def convert_to_json
puts "in convert_to_json for #{self}"
end
puts '---------- users.map { |user| convert_to_json }'
users.map { |user| convert_to_json }
puts '---------- users.map { _1.convert_to_json }'
users.map { _1.convert_to_json }
puts '---------- users.map(&:convert_to_json)'
users.map(&:convert_to_json)
puts '---------- users.map { |user| user.convert_to_json }'
users.map { |user| user.convert_to_json }
% ruby -w convert_to_json.rb
---------- users.map { |user| convert_to_json }
in convert_to_json for main
in convert_to_json for main
in convert_to_json for main
---------- users.map { _1.convert_to_json }
in convert_to_json for a
in convert_to_json for b
in convert_to_json for c
---------- users.map(&:convert_to_json)
in convert_to_json for a
in convert_to_json for b
in convert_to_json for c
---------- users.map { |user| user.convert_to_json }
in convert_to_json for a
in convert_to_json for b
in convert_to_json for c