How do I calculate the average length of a string in my array? I thought I could do
2.4.0 :004 > arr = ["a", "ab", "abc"]
=> ["a", "ab", "abc"]
...
2.4.0 :006 > arr.inject{ |sum, el| sum + el.length }.to_f / arr.size
TypeError: no implicit conversion of Integer into String
from (irb):6:in `+'
from (irb):6:in `block in irb_binding'
from (irb):6:in `each'
from (irb):6:in `inject'
from (irb):6
from /Users/nataliab/.rvm/gems/ruby-2.4.0/gems/railties-5.0.2/lib/rails/commands/console.rb:65:in `start'
from /Users/nataliab/.rvm/gems/ruby-2.4.0/gems/railties-5.0.2/lib/rails/commands/console_helper.rb:9:in `start'
from /Users/nataliab/.rvm/gems/ruby-2.4.0/gems/railties-5.0.2/lib/rails/commands/commands_tasks.rb:78:in `console'
from /Users/nataliab/.rvm/gems/ruby-2.4.0/gems/railties-5.0.2/lib/rails/commands/commands_tasks.rb:49:in `my_command!'
from /Users/nataliab/.rvm/gems/ruby-2.4.0/gems/railties-5.0.2/lib/rails/commands.rb:18:in `<top (required)>'
from bin/rails:4:in `require'
from bin/rails:4:in `<main>'
but apparently not.
I would write like:
arr.join.size / arr.size.to_f
Also, you can use sum
since Ruby 2.4:
arr.sum(&:size) / arr.size.to_f
#=> 2.0