avatarTim Maudlin

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

3786

Abstract

arison operators, and bitwise operators on this type too.</p><p id="c4da">It’s important to note that there is another type, called <code>bytes</code> which is different from the above in that it is a dynamically sized array, and not a value type but a reference type. It is basically shorthand for <code>byte[]</code>.</p><p id="ad39">When you can limit the length of your data to a predefined amount of bytes, it is always good practice to use some of <code>bytes1</code> to <code>bytes32</code> because it is much cheaper.</p><h2 id="0118">Enums</h2><p id="aea7"><b>Enums</b> in Solidity are a way to create user-defined types. Enums are explicitly convertible to integer types, but not implicitly. Enum values are numbered in the order they are defined, starting from 0.</p><p id="ed00">Enums are not part of the ABI (Application Binary Interface — more on this in a later lesson, but it’s basically how you encode Solidity code for the Ethereum Virtual Machine, and how you get data back). This means that if your function returns an <code>enum</code> for example, it will be automatically converted to a <code>uint8</code> behind the scenes. The integer returned is just large enough to hold all enum values. With more values, the size gets increased too (<code>uint16</code> and up).</p><p id="cdb6">The below code, taken from the <a href="https://docs.soliditylang.org/en/v0.4.24/index.html">Solidity docs</a>, defines an enum with four possible values, creates a variable of that enum named <code>choice</code> and a constant called <code>defaultChoice</code>that will hold a default value.</p><div id="cf29"><pre><span class="hljs-keyword">enum</span> <span class="hljs-title class_">ActionChoices</span> { GoLeft, GoRight, GoStraight, SitStill } ActionChoices choice; ActionChoices <span class="hljs-type">constant</span> <span class="hljs-variable">defaultChoice</span> <span class="hljs-operator">=</span> ActionChoices.GoStraight;</pre></div><p id="66a9">Now we can define some functions to interact with our <code>enum</code>.</p><div id="c0bb"><pre><span class="hljs-title function_"><span class="hljs-keyword">function</span> <span class="hljs-title">setGoStraight</span></span>() <span class="hljs-keyword">public</span> { choice = ActionChoices.GoStraight; }

<span class="hljs-title function_"><span class="hljs-keyword">function</span> <span class="hljs-title">setChoice</span></span>(ActionChoices <span class="hljs-keyword">new</span><span class="hljs-type">Choice</span>) <span class="hljs-keyword">public</span> { choice = <span class="hljs-keyword">new</span><span class="hljs-type">Choice</span>; }</pre></div><p id="6bc2">The first one simply sets the <code>choice</code> to <code>GoStraight</code> while the second one sets it to the choice that the caller passes into the function. As we can see after deployment, the <code>setChoice</code> function expects a <code>uint8</code> value, which corresponds to the <code>enum</code> value declared at that number.</p><figure id="e997"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/1*1pKNPVy4UUBCSLi2-SIckg.png"><figcaption>Testing enums in Remix</figcaption></figure><p id="7917">If we want to get the value of <code>choice</code> and <code>defaultChoice</code>, we can define the following functions:</p><div id="1f02"><pre><span class="hljs-keyword">function</span> <span class="hljs-title">getChoice</span>() public view returns (ActionChoices) { <span class="hljs-keyword">return</span> <span class="hljs-type">choice</span>; }</pre></div><div id="43e7"><pre><span class="hljs-function">function <span class="hljs-title">getDefaultChoice</span>() <span class="hljs-keyword">public</span> pure <span class="hljs-title">returns</span> (<span class="hljs-params"><span class=

Options

"hljs-built_in">uint</span></span>)</span> { <span class="hljs-keyword">return</span> <span class="hljs-built_in">uint</span>(defaultChoice); }</pre></div><p id="c2f2">As we can see if we try this out in Remix, the first function returns a <code>uint8</code> while the second returns a <code>uint256</code>.</p><figure id="e514"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/1*jmaOFb9GhXz7FWC4ONMa_A.png"><figcaption>Testing enums in Remix</figcaption></figure><h2 id="3c7c">Fixed point numbers</h2><p id="2ecc"><b>Fixed point numbers </b>represent fractional numbers by storing a fixed number of digits of their fractional part. No matter how large or small the fractional part is, it will always use the same number of bits.</p><p id="cdcd" type="7">Fixed point numbers are not fully supported by Solidity yet. They can be declared, but cannot be assigned to or from.</p><p id="f872">We can differentiate between signed fixed point numbers, declared with the <code>fixed</code> keyword, and unsigned fixed point numbers, declared with the <code>ufixed</code> keyword.</p><p id="3c1c">It can also be declared as <code>fixedMxN</code> or <code>ufixedMxN</code> where <code>M</code> represents the number of bits the type takes, and <code>N</code> represents the number of decimal points. <code>M</code> has to be divisible by 8 and a number between 8 and 256. <code>N</code> has to be a number between 0 and 80.</p><p id="96e1">They function with the following operators:</p><ul><li>Comparisons: <code><=</code>, <code><</code>, <code>==</code>, <code>!=</code>, <code>>=</code>, <code>></code> (evaluate to <code>bool</code>)</li><li>Arithmetic operators: <code>+</code>, <code>-</code>, unary <code>-</code>, unary <code>+</code>, <code>*</code>, <code>/</code>, <code>%</code> (remainder)</li></ul><h2 id="09b7">Conclusion</h2><p id="bd3a">In this lesson, we looked at what value types are available in Solidity and how each one works.</p><p id="28de">Thank you for staying with us till the end. If you enjoyed reading this piece please keep in touch and follow Solidify to keep up with our lessons on Solidity. In the upcoming articles, we will deep dive into the intricacies of the language, progressing from beginner to advanced level.</p><p id="067c">If you are new to Solidity, check out the previous lessons about setting up a local development environment and writing your first smart contract.</p><div id="6b76" class="link-block"> <a href="https://readmedium.com/how-to-setup-your-local-solidity-development-environment-c4c8195810f3"> <div> <div> <h2>How to Setup Your Local Solidity Development Environment</h2> <div><h3>Get started with smart contract development</h3></div> <div><p>medium.com</p></div> </div> <div> <div style="background-image: url(https://miro.readmedium.com/v2/resize:fit:320/1*HHko-o9m1sVngmTeRVYgKA.jpeg)"></div> </div> </div> </a> </div><div id="3ad1" class="link-block"> <a href="https://readmedium.com/lesson-1-your-first-solidity-smart-contract-1ba7e641f9a3"> <div> <div> <h2>Lesson 1: Your First Solidity Smart Contract</h2> <div><h3>In the previous lesson, we looked at how to set up your local Solidity development environment. Here we will continue…</h3></div> <div><p>medium.com</p></div> </div> <div> <div style="background-image: url(https://miro.readmedium.com/v2/resize:fit:320/1*7r7HSYkbn73NrmR_skvh5w.jpeg)"></div> </div> </div> </a> </div></article></body>

HUMOR | STORYTELLING | LIFE LESSONS

How a Cartoonist and a Baseball Hat Saved My Life

A true story, maybe a little on the dramatic side

Photo by the Author

🎁 Stay with me until the end. I have a special gift for you.🎁

To quote a famous TV show, with a slight tweak by yours truly.

Ladies and gentlemen: the story you are about to hear is true. No names have been changed to protect the innocent since the innocent victim is ME! (with apologies to Dragnet)

Yes, a cartoonist and a baseball hat saved my life. These were the days before my heatstroke issues and my wide-brim hat. You can read about that chilling story here.

No, this is about a time when I was much younger and easily distracted.

Back story

I love comic strips! And I love collecting reprint books of my favorite strips. One of those comic strips is The Norm by Michael Jantze.

A sampling of my Norm reprint books, Photo by the Author

It started innocently enough at a football game for my alma mater Ball State University in Muncie, Indiana. My family was watching the game with friends.

Then it happened! I’ll share the story with you in the letter I sent to Mr. Jantze thanking him and The Norm for saving my life.

Dear Michael: My family and some friends went to a football game last weekend. Our seats were in the end zone. My son, who is two years old, was going back and forth from one person to another. My wife and I were watching him when I heard my brother shout, “Watch out Tim!”

I looked up to see the football flying end over end right toward me.

There was no time to react.

Luckily I was wearing my Norm hat. The football hit the bill of the hat first and then deflected off of my temple. The hat fell off of my head but did its job.

I probably would have gotten popped right in the nose if not for my Norm hat. The hat was fine and I proudly put it back on.

I guess you’re right when you say The Norm is working for (its readers). It worked for me.

– Tim, Pekin, IN

Michael replied…

I always knew life was easier for Norm readers. But now he’s saving lives…

See it’s not hyperbole when I say my Norm hat saved my life!

My wife would say I am being overly dramatic. But it wasn’t her head that was plunked! So she just needs to stop laughing and show her husband a little sympathy.

Daily Doable: Learn to laugh at yourself. It will endear you to others even though it might not seem like it at the time since they’re crying from laughing so hard… at you! #DoWhatYouCanNow

Proof that I’m not making this story up.

The letter, Photo by the Author

How did I come to own a Norm hat in the first place? That’s a story for another time. Not as harrowing as this one but very cool.

Discover more great stories from these writers. Henery X (long), Amy Marley, Michele Thill, Dr Mehmet Yildiz, Trapper Sherwood, Nomanono Isaacs, Timothy Key, Linda Halladay, Joan Kent, PhD, Casi Mclean, Jacquelyn Lynn, Dr Michael Heng, Dipti Pande

This Inspire Point and Daily Doable were brought to you by the ❤️ Know, Like & Trust Template ❤️ Get your Free copy HERE. No opt-in required.

Graphic by Tim Maudlin

I’m Storyteller and Template Architect Tim Maudlin. Please allow me to introduce myself.

This story was originally published on my site at DoWhatYouCanNow.com

Humor
Storytelling
Life Lessons
Content Creation
Comic Strip
Recommended from ReadMedium