Синтаксис на блокове

  1. В курса и повечето ruby свят do/end се пише, когато блокът е на повече от един ред.

    [1, 2, 3, 4].each { |n| puts "n = #{n}" }
    
    [1, 2, 3, 4].each do |n|
      # some random code
      puts "n = #{n}"
    end
    
    [1, 2, 3, 4].map { |n| n**10 }
    
    [1, 2, 3, 4].map do |n|
      # some random code
      n**10
    end
    

    Но е възможен и друг подход, където {} се използва, когато главната цел на блока е да върне резултат и do/end, когато целта на блока са някакви странични ефекти.

    [1, 2, 3, 4].each do |n| puts "n = #{n}" end
    
    [1, 2, 3, 4].each do |n|
      # some random code
      puts "n = #{n}"
    end
    
    [1, 2, 3, 4].map { |n| n**10 }
    
    [1, 2, 3, 4].map { |n|
      # some random code
      n**10
    }
    
  2. Интересна гледна точка. Аз лично използвам подобна евристика за изпускане на скобите при извикване на функция с аргументи.

    Ако използвам резултата - слагам скоби. Ако резултатът не е от значение - не слагам.

    ПП. Не винаги само това е решаващото, понякога просто едното ми изглежда по-добре :)

Трябва да сте влезли в системата, за да може да отговаряте на теми.