diff --git a/ruby.html.markdown b/ruby.html.markdown index 578e8ef3..7170932d 100644 --- a/ruby.html.markdown +++ b/ruby.html.markdown @@ -91,7 +91,7 @@ false.class #=> FalseClass 2 <= 2 #=> true 2 >= 2 #=> true -# Combined comparison operator (returns `1` when the first argument is greater, +# Combined comparison operator (returns `1` when the first argument is greater, # `-1` when the second argument is greater, and `0` otherwise) 1 <=> 10 #=> -1 (1 < 10) 10 <=> 1 #=> 1 (10 > 1) @@ -259,8 +259,8 @@ else 'else, also optional' end -# If a condition controls invocation of a single statement rather than a block of code -# you can use postfix-if notation +# If a condition controls invocation of a single statement rather than a block +# of code you can use postfix-if notation warnings = ['Patronimic is missing', 'Address too short'] puts("Some warnings occurred:\n" + warnings.join("\n")) if !warnings.empty? @@ -268,7 +268,7 @@ puts("Some warnings occurred:\n" + warnings.join("\n")) if !warnings.empty? puts("Some warnings occurred:\n" + warnings.join("\n")) unless warnings.empty? # Loops -# In Ruby, traditional `for` loops aren't very common. Instead, these +# In Ruby, traditional `for` loops aren't very common. Instead, these # basic loops are implemented using enumerable, which hinges on `each`. (1..5).each do |counter| puts "iteration #{counter}" @@ -279,9 +279,10 @@ for counter in 1..5 puts "iteration #{counter}" end -# The `do |variable| ... end` construct above is called a 'block'. Blocks are similar -# to lambdas, anonymous functions or closures in other programming languages. They can -# be passed around as objects, called, or attached as methods. +# The `do |variable| ... end` construct above is called a 'block'. Blocks are +# similar to lambdas, anonymous functions or closures in other programming +# languages. They can be passed around as objects, called, or attached as +# methods. # # The 'each' method of a range runs the block once for each element of the range. # The block is passed a counter as a parameter. @@ -415,19 +416,20 @@ surround { puts 'hello world' } #=> hello world #=> } -# Blocks can be converted into a 'proc' object, which wraps the block -# and allows it to be passed to another method, bound to a different scope, -# or manipulated otherwise. This is most common in method parameter lists, -# where you frequently see a trailing '&block' parameter that will accept -# the block, if one is given, and convert it to a 'Proc'. The naming here is -# convention; it would work just as well with '&pineapple'. +# Blocks can be converted into a 'proc' object, which wraps the block and allows +# it to be passed to another method, bound to a different scope, or manipulated +# otherwise. This is most common in method parameter lists, where you frequently +# see a trailing '&block' parameter that will accept the block, if one is given, +# and convert it to a 'Proc'. The naming here is convention; it would work just +# as well with '&pineapple'. def guests(&block) block.class #=> Proc block.call(4) end -# The 'call' method on the Proc is similar to calling 'yield' when a block is -# present. The arguments passed to 'call' will be forwarded to the block as arguments. +# The 'call' method on the Proc is similar to calling 'yield' when a block is +# present. The arguments passed to 'call' will be forwarded to the block as +# arguments. guests { |n| "You have #{n} guests." } # => "You have 4 guests." @@ -443,7 +445,7 @@ end upcased = ['Watch', 'these', 'words', 'get', 'upcased'].map(&:upcase) puts upcased #=> ["WATCH", "THESE", "WORDS", "GET", "UPCASED"] - + sum = [1, 2, 3, 4, 5].reduce(&:+) puts sum #=> 15 @@ -472,7 +474,7 @@ def best(first, second, third, *others) puts "There were #{others.count} other participants." end -best *ranked_competitors +best *ranked_competitors #=> Winners are John, Sally, and Dingus. #=> There were 2 other participants. @@ -480,9 +482,9 @@ best *ranked_competitors 5.even? #=> false 5.odd? #=> true -# By convention, if a method name ends with an exclamation mark, it does something destructive -# like mutate the receiver. Many methods have a ! version to make a change, and -# a non-! version to just return a new changed version. +# By convention, if a method name ends with an exclamation mark, it does +# something destructive like mutate the receiver. Many methods have a ! version +# to make a change, and a non-! version to just return a new changed version. company_name = "Dunder Mifflin" company_name.upcase #=> "DUNDER MIFFLIN" company_name #=> "Dunder Mifflin" @@ -516,7 +518,8 @@ class Human @name end - # The above functionality can be encapsulated using the attr_accessor method as follows. + # The above functionality can be encapsulated using the attr_accessor method + # as follows. attr_accessor :name # Getter/setter methods can also be created individually like this.