avatarUbaid siddiqui

Free AI web copilot to create summaries, insights and extended knowledge, download it at here

3392

Abstract

er">17</span>]</pre></div><blockquote id="c020"><p>Compact Map()</p></blockquote><p id="b1c2"><code>compactMap</code> function is similar to <code>map</code>, but it also includes an additional step, it filters out any <code>nil</code> values that result from applying the transformation closure. This is particularly useful when you have an array of optional values and you want to transform them while simultaneously filtering out the <code>nil</code> elements.</p><div id="9cf9"><pre><span class="hljs-keyword">extension</span> <span class="hljs-title class_">Array</span> { <span class="hljs-keyword">func</span> <span class="hljs-title function_">compactMap</span><<span class="hljs-type">T</span>>(<span class="hljs-keyword">_</span> <span class="hljs-params">transforms</span>: (<span class="hljs-type">Element</span>) -> <span class="hljs-type">T</span>?) -> [<span class="hljs-type">T</span>] { <span class="hljs-keyword">var</span> result <span class="hljs-operator">=</span> <span class="hljs-type">T</span> <span class="hljs-keyword">for</span> element <span class="hljs-keyword">in</span> <span class="hljs-keyword">self</span> { <span class="hljs-keyword">if</span> <span class="hljs-keyword">let</span> element <span class="hljs-operator">=</span> element { result.append(transform(element)) } } <span class="hljs-keyword">return</span> result } }</pre></div><p id="fe9c">Here the only change from <code>Map</code> and <code>Compact Map</code> is avoiding the nil value with a condition.</p><p id="3b42">In the above code</p><ul><li>It takes a closure <code>transform</code> as an argument, which specifies how each element should be transformed.</li><li>Inside <code>compactMap</code>, a new array <code>result</code> is created to store the transformed non-nil elements.</li><li>It then iterates over each element of the original array (<code>self</code>), applies the transformation closure to each element, and checks if the result is non-nil.</li><li>If the result is non-nil, it appends the transformed element to the <code>result</code> array.</li><li>Finally, it returns the <code>result</code> array containing all the non-nil transformed elements.</li></ul><blockquote id="9909"><p>How to consume it?</p></blockquote><div id="41f1"><pre><span class="hljs-keyword">let</span> mapArray <span class="hljs-operator">=</span> [<span class="hljs-number">23</span>, <span class="hljs-number">43</span>, <span class="hljs-number">56</span>, <span class="hljs-literal">nil</span>, <span class="hljs-number">75</span>, <span class="hljs-number">9</span>, <span class="hljs-number">14</span>] <span class="hljs-keyword">let</span> result<span class="hljs-operator">=</span> mapArray.compactMap { <span class="hljs-variable">$0</span> } <span class="hljs-built_in">debugPrint</span>(result) output: [<span class="hljs-number">23</span>, <span class="hljs-number">43</span>, <span class="hljs-number">56</span>, <span class="hljs-number">75</span>, <span class="hljs-number">9</span>, <span class="hljs-number">14</span>]</pre></div><blockquote id="854c"><p>Flat Map()</p></blockquote><p id="b656">FlatMap is typically the same as <code>map</code> does, only difference is that it always return flatten array joining all elements. Typically used to collect specific data in n

Options

ested array, dictionary or set</p><div id="6431"><pre><span class="hljs-keyword">extension</span> <span class="hljs-title class_">Array</span> { <span class="hljs-keyword">func</span> <span class="hljs-title function_">flatMap</span><<span class="hljs-type">T</span>>(<span class="hljs-keyword">_</span> <span class="hljs-params">transform</span>: (<span class="hljs-type">Element</span>) -> [<span class="hljs-type">T</span>]) -> [<span class="hljs-type">T</span>] { <span class="hljs-keyword">var</span> result <span class="hljs-operator">=</span> <span class="hljs-type">T</span> <span class="hljs-keyword">for</span> element <span class="hljs-keyword">in</span> <span class="hljs-keyword">self</span> { result.append(contentsOf: transform(element)) } <span class="hljs-keyword">return</span> result } }</pre></div><p id="75fa">In the above code</p><ul><li>It takes a closure <code>transform</code> as an argument, which specifies how each element should be transformed into a sequence.</li><li>Inside <code>flatMap</code>, a new array <code>result</code> is created to store the flattened elements.</li><li>It then iterates over each element of the original array (<code>self</code>), applies the transformation closure to each element, and concatenates the resulting sequences into the <code>result</code> array.</li><li><code>append(contentsOf: )</code> will add the elements of a sequence to the end of the array.</li><li>Finally, it returns the <code>result</code> array containing all the flattened elements.</li></ul><blockquote id="2285"><p>How to consume it?</p></blockquote><div id="117f"><pre><span class="hljs-keyword">let</span> arrayOfArrays <span class="hljs-operator">=</span> [[<span class="hljs-number">1</span>, <span class="hljs-number">2</span>, <span class="hljs-number">3</span>], [<span class="hljs-number">4</span>, <span class="hljs-number">5</span>, <span class="hljs-number">6</span>], [<span class="hljs-number">7</span>, <span class="hljs-number">8</span>, <span class="hljs-number">9</span>]] <span class="hljs-keyword">let</span> transformedArray <span class="hljs-operator">=</span> arrayOfArrays.flatMap { <span class="hljs-variable">$0</span> } <span class="hljs-built_in">print</span>(transformedArray) output: [<span class="hljs-number">1</span>, <span class="hljs-number">2</span>, <span class="hljs-number">3</span>, <span class="hljs-number">4</span>, <span class="hljs-number">5</span>, <span class="hljs-number">6</span>, <span class="hljs-number">7</span>, <span class="hljs-number">8</span>, <span class="hljs-number">9</span>]</pre></div><h1 id="3bda">Conclusion</h1><p id="057c">There are plenty of other use cases for higher-order functions. This is a gist of what we have discovered today:</p><ul><li>If you need to simply transform a value to another value, then use <code>map</code>.</li><li>If you need to remove nil values, then use <code>compactMap</code>.</li><li>If you need to flatten your result one level down, then use <code>flatMap</code>.</li></ul><p id="0a10">Thank you for your time and attention! 👏👏👏</p><p id="33e6">Do clap👏 if you like this and comment your suggestions!!! <i>Happy coding</i>!!!</p><blockquote id="1e0c"><p>Source Code: <a href="https://github.com/Vikassingamsetty/HigherOrderFunctions.git">GitHub</a></p></blockquote></article></body>

Different Types of Whey Protein and Which One to Buy

Whey protein has been the most popular supplement in the fitness community since its introduction in the late 90s. The reason? It works! Not only does it help build lean muscle, but it also increases your metabolism and promotes weight loss. But with so many different types of whey protein available, how do you know which one to buy? This article will introduce you to the different types of whey protein, what they do, and which one to buy based on your goals and dietary restrictions. Let’s begin!

Photo by CTRL — A Meal Replacement on Unsplash

What is Whey Protein?

Whey protein is a fast-digesting protein that’s found in milk. It is one of two proteins found in milk, with casein being the other. Whey also contains important minerals, such as calcium, potassium, and phosphorus, as well as beta-lactoglobulin (an essential amino acid) and glycomacropeptide (which has been linked to cancer prevention). Although it is high in fat and carbs compared to some other forms of protein powder — with less than 1g per serving — whey protein is still seen by many as an ideal form because it’s very low in lactose and easy on your digestive system.

Powdered vs. Whole-Food sources

The two major forms of protein — powdered or whole-food — offer a few key differences. Powders are easier to make, take up less space in your kitchen, don’t require refrigeration and often dissolve quickly. On the other hand, whole-food sources are more natural (and healthier), offer a host of vitamins and minerals that powders don’t (though they can be taken as supplements) and typically taste better than supplements. Overall, powdered protein is great for convenience, whereas whole foods provide more nourishment from protein sources that have other health benefits as well.

Soy vs. rice vs. hemp

All three varieties have unique benefits, but choosing which type of whey protein powder is best for you can be difficult. Before making a decision, it’s important to understand how each is produced. While soy and rice proteins are more common, hemp protein may actually provide superior nutrition.

What does Protein Isolate mean?

This term refers to a process that uses filters and membranes to remove fat, cholesterol, lactose (milk sugar), and other substances from milk. What you end up with is a powder made up of mostly protein. However, it’s worth noting that isolates tend to be less bioavailable than concentrate. In other words, your body absorbs them more slowly — and so they have a lower biological value (BV). Biological value is used as an indication of how well your body can absorb and utilize protein. A whey isolate has a BV around 90%, compared with concentrate (80%–95%). These numbers are averages; your supplement may have different numbers on its label. If you want your body to use protein as quickly as possible, go for concentrate instead.

Concentrate, Hydrolysate, and Isolate are Three Different types of Protein

  • Concentrate protein contains more fat, lactose, and impurities than isolate. It is also less expensive.
  • Hydrolysate is broken down into a simple form that is easily digested. Its amino acids are absorbed at different rates than concentrate or isolate.
  • Isolate protein has a higher concentration of protein than concentrate but fewer carbohydrates, fats, and lactose; it’s also quite pricey! The best choice depends on your diet — you may want to try them all (this requires some cash).

3 Things you need to look at when choosing a Protein Powder

type of protein, source, ingredients. There are many types of protein (referring to whey here) but which is right for you? If you’re a regular gym goer or if you have a protein intake goal in mind then it’s always better if you can make your own homemade blends, but if it isn’t feasible then some of these following types will be more helpful than others. This site provides an excellent list at what different types each product contains. The more isolates per gram (if not a pure isolate), will mean less fats and carbs. So ultimately if fat loss is your goal then finding one with no lactose would be ideal.

Give a clap for the post and follow for more relevant posts also make sure to share it to your friends.

Recommended reading Foods to include in your diet in 2022.

some external links in this post are affiliate.

Fitness
Exercise
Diet
Health
Gym
Recommended from ReadMedium