Book Image

Mastering Chef

By : Mayank Joshi
Book Image

Mastering Chef

By: Mayank Joshi

Overview of this book

Table of Contents (20 chapters)
Mastering Chef
Credits
About the Author
About the Reviewers
www.PacktPub.com
Preface
2
Knife and Its Associated Plugins
10
Data Bags and Templates
Index

Bang methods


As you might have noticed, we used two different variants of the same method in our previous example where we explained destructive and nondestructive ways of selecting elements from an array. The bang sign after a method doesn't necessarily mean that the method would be destructive, nor does it imply that methods without a bang sign are always nondestructive. It's just a means of specifying the fact that the methods with the ! sign affixed to the method name are more dangerous as compared to methods without it.

The bang methods are generally used to do modifications in place. Now, what this means is that, say I've an x = [1,2,3,4,5] array and I want to remove all elements from this array that are greater than 2. If I chose x.select, then the x array would remain the same; however, a new array object containing [3,4,5] would be returned. However, if I were to choose x.select!, then the x array itself would be modified:

2.1-head :001 > x=[1,2,3,4,5]
 => [1, 2, 3, 4, 5]
2...