avatarILLUMINATION

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>

Daily Digest from ILLUMINATION

Featured Stories Issue #11

Selected stories from 8,600+ writers supporting 84,700+ readers on ILLUMINATION

image designed by Dr Mehmet Yildizdigitalmehmet.com

Dear Readers,

We compiled a small number of engaging and informative stories covering a broad range of topics for your enjoyment today.

We also share links to these stories via our blogs on Word Press for our external readers.

Thank you for following our publication and reading the stories of our contributing writers. ILLUMINATION now has over 84,700 readers.

If you missed previous digest, you can access them from this collection.

Please enjoy these informative, engaging, and inspiring stories.

Dew Langrial

Tim Denning

The Maverick Files

Dr Mehmet Yildiz

Liam Ireland

Thewriteyard

Richelle Délia, PhD

Stuart Englander

Holly Kellums

Carel Kolchinski

Kylie Craft

Camille Allard

Elvie Lins

Claire Kelly

Akis Apostolopoulos

Janice Arenofsky

Annick Batamuliza

Stela Gineva

Maddie McGuire

Louis Petrik

Alexa Baczak

Josh Balerite Acol

Jordan Mendiola

Ian Worrall

Bill Abbate

Liam Hunter-Bailey

Mary Beth Hazeldine

Felix Otoo

Francesco Rizzuto

◦•●Christina M. Ward ●•◦

Ikram Al Mouaswas

Sheryll James

Tavian Jean-Pierre

Rina Zhubi

Michael Patanella

Austin Harvey

Maria Rattray

Denise G

Aldric Chen

Ivette Cruz

Marcus

Adebayo Adeniran

Darren Richardson

Nasar Karim

America Zed

Jennifer M. Wilson

Mr. Huseyin

Asmita Karanje

Bob Wuest

The Orange Gildersleeve

S|B

Michael Thacker

Keri Mangis

Margaret Pan

Paul Douglas

Nasar Karim

Patricia Rosa

Alberto Guerrero

Yousuf Rafi

Kimberly B

Anja Vojta, MSc

Veronika Kaufmann

Richard Armstrong

Bhavna Narula

Trapper Sherwood

Upen Singh

Angelina Der Arakelian

Marcel Badia

Walter Pop Matthews IV

Patrick M. Ohana

Kai Taraporevala

Noorain Hassan, BMS

Khalid Birdsong

Abby Kris

Juhi Kumar

Shiraz Zafar Hussain

TammyTierney

Tavian Jean-Pierre

Esther George

Nancy Ann

Floyd Mori

Shaista Malik

Mike Arnold

Alyssa Di Grazia

Laxaa

Thank you for reading our stories.

We are grateful to our editors who reviewed and published these stories for you. Our editors work hard to help our writers succeed. They invest their precious time volunteering for smooth publishing of your stories. ILLUMINATION-Curated, ILLUMINATION, Dr Mehmet Yildiz, Tree Langdon, Brian E. Wish, PhD,Dr Ron Pol, Dr Michael Heng, Paul Myers MBA, Karen Madej, Joe Luca, Dipti Pande, Kevin Buddaeus, Kate Maxwell, Arthur G. Hernandez, Bill Abbate, Michael Patanella, Aurora Eliam, CMP, René Junge,Geetika Sethi, Ahmed Jamal, Britni Pepper, Selma, Earnest Painter, Dew Langrial, B. A. Cumberlidge. Lanu Pitan, Agnes Laurens, EP McKnight, MEd, CR Mandler MAT, The Maverick Files, Sumera Rizwan, Liam Ireland, Tony Young, Jr., Neha Sandhir S, Desiree Driesenaar, Stuart Englander, Ntathu Allen, Thewriteyard, Haimish Mead, Maria Rattray, Cristo Lopez, PhD,Dr. Preeti Singh, Holly Kellums, Kristina Segarra, Yohanan Gregorius, Audrey Malone,janny’s heart,Sabana Grande, Jennifer Friebely, Zen Chan, Aamir Kamal 🚀🚀🚀, John Cunningham, [arlie] PEYTON, Georgia Dimitrious, Kim Petersen, Josh Balerite Acol, Noorain Hassan, BMS, Mallika Vasak, Ikram Al Mouaswas, Linda Kowalchek, Terry L. Cooper, George Blue Kelly, Scott Hughey (TheWriteScott), Claire Kelly

You can find editor profiles in this story.

Invitation to prospective writers

To join ILLUMINATION, ILLUMINATION-Curated, ILLUMINATION’ S MIRROR, Technology Hits, and SYNERGY.please send a request via this link. We will help you succeed. 8,600+ writers contribute to our publications.

Please subscribe to our free newsletter and stay in touch with our progress and get customized content for your writing and reading needs. You can also subscribe and enjoy free Content Strategy, Development, and Marketing Insights shared by Dr Mehmet Yildiz.

Thank you for reading stories of outstanding writers compiled by ILLUMINATION-Curated, ILLUMINATION and Editor of Technology Hits

Writing
Reading
Business
Self Improvement
Entrepreneurship
Recommended from ReadMedium