avatarAngelica Mendez

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>

The Evolution of Friendships While on a Self-Development Journey

This is a topic I see little information on, which is important to discuss because change brings, well, change.

Photo by Katerina Kerdi on Unsplash

As I’ve grown and progressed, God has pushed me into different seasons of my life, moving me forward and closer to my goals.

But being intentional about my personal development has brought about other changes I wasn’t expecting.

When we go on a self-development journey and challenge ourselves to heal from our past pains and traumas, it highlights to the people around us who aren’t making these changes their lack of, well, change.

One example I can think of is a family member of mine, whom I was very close to, who was usually the one in the spotlight. Let me explain.

Growing up, I had challenges with my appearance. I suffered from hormonal acne and carried a little extra weight. On the other hand, this relative of mine was the definition of attractive.

As we got older, however, I shed the extra weight, my acne cleared up, but most importantly, I began to heal from many of my self-esteem issues and became confident.

This confidence made me stand out, and I began to get a lot of attention from the opposite sex. The kind of attention this relative of mine was used to getting.

This relative also came into her own issues with her appearance. She gained weight, and acne she never had started appearing. She began dealing with many of the past problems I had dealt with.

She, however, was not on a self-development journey, and I’m sure to this day, she has not been able to move her life forward because she has not done any real healing. Only surface-level stuff that appeases the real hurt.

Not long ago, I found out this relative said there was no point in trying to look good or make an effort because I was getting all the attention. This happened during a bachelorette party we both attended.

I was shocked, to say the least. I had no idea she had begun feeling inferior to me because of the change in my appearance and confidence.

At the same time, I felt very disappointed because I was not to blame for her newfound self-esteem issues.

Long story short, we had a falling out, and we’re no longer on speaking terms.

I was not expecting this change because she and I had made many plans for the present and future.

It was a very painful friendship break-up or a relative-friendship break-up? I digress.

After looking back, this change was necessary because she was not taking responsibility for her life, the challenges she was having, and doing the healing she needed and still needs to move her life forward.

As far as I know, she was looking to me as an outlet for why she was not getting what she wanted.

As I said, she used to be the girl who would get a guy’s attention first, but that changed when I changed. This upset her. But I’m not going back to my old bad habits to make her feel comfortable.

This is the reality many of us who choose to be cycle breakers face.

We come to a point where we decide we will make a real difference. And we start doing the work to change.

Some of the closest people to us will not like this change. It’s threatening to them. It’s a mirror showing them precisely what they’re not doing.

And instead of taking a look at themselves, they blame us for their insecurities and troubles.

Unfortunately, we must distance ourselves from these people, no matter how much we love them.

We cannot accept being treated poorly or be made to feel bad for wanting and working towards having a better life and becoming emotionally healthy and intelligent.

This has been the season I’ve been going through recently.

I’ve lost all my friendships because I decided I would not stay the same.

I decided I would no longer be the people-pleaser, agreeable person I had always been.

I decided to find my voice, stand up for what I believe in, and not back down at the first sign of conflict.

I decided to heal my pains and trauma and change my avoidant habits.

I decided to become a woman who can deal with conflict, have difficult conversations, have healthy self-esteem, love herself, and is going to change and be better.

I didn’t know what I would lose in the process, so I’m writing this.

Not to talk you out of it but to prepare you.

It will be painful, but you will be free to seek the life you want without anyone trying to talk you out of it.

Without anyone criticizing you for wanting change.

Without anyone hating on you for choosing to be accountable and demanding accountability in return.

For asking to be respected, setting boundaries, and asking for what you need.

When we stand up for ourselves, especially when we used to be agreeable, like me, people close to us will react badly if they are not on a self-development journey themselves.

They will try to put you back in the box you used to be in.

But you’re not going to accept that or settle for that because you want more. You want better, and you’ve worked to be better.

You’ve grown and realized you want more out of life and relationships.

If the people around you do not want to step up to the plate and choose to do better, you will find yourself saying goodbye to them eventually.

This is not a bad thing—just an inevitable consequence of change.

Tell me, what have you learned from the changes that have taken place in your life due to pursuing personal development?

Personal Development
Self Improvement
Self-awareness
Life
Life Lessons
Recommended from ReadMedium