avatarPierre Baguette

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>

3 French Words You Need To Know To Embrace The French Way of Life

Photo by Rafael Garcin on Unsplash

France is the most visited country in the world, with tourists idolizing the beauty of the city, French gastronomy, and the stylish life of the French. Besides all the infatuation, the French have a lot of stereotypes.

Being romantic, being lazy, being cold. I’ve lived in France all my life, and I will enlighten you on the definition of French culture. Exactly three words, which exist only in French, define this culture that only the French know.

Photo by Louis Hansel on Unsplash

Gourmandise

The word gourmandise translates into English as greediness. This is partly true, but the term implies much more. It’s a term used everywhere, especially when eating a delicious meal. I like to use this term in many of my articles about food, and in this article, I’d like to clarify the definition of this word.

It’s a word often used when we add something heavy like creme fraiche, butter, or even bacon to a dish. Adding these elements doesn’t just add calories, it adds complexity to every dish. Many renowned Michelin-starred chefs use many gourmet elements to make their dishes exquisite. Paul Bocuse served many dishes with crème fraiche. Joel Robuchon always used a generous amount of butter to serve dishes in all his Michelin-starred restaurants. And that’s not all.

Gourmandise is a word used for sweets, even for moments when we snack. But why? The common denominator between adding something heavy, a treat, and a snack is that the person eats for pleasure rather than to satisfy hunger. The culture of gourmandise perfectly describes the philosophy of the French: live to eat rather than eat to live.

Photo by Etienne Boulanger on Unsplash

Flâner

It’s a term that means to wander aimlessly. It’s such a simplistic term that many people forget. By walking aimlessly, the French take the time to appreciate the sights and city life that surrounds us. This is perhaps one of the reasons why France is recognized as a country of art, having a talent for being fastidious with aesthetics. All of France’s major cities are so beautiful that every inhabitant and visitor naturally walks around enchanted by each one.

It’s one of the stereotypes of the French to be cool, to enjoy the simple moments of walking. We tend to think of the French as lazy people, but it’s just that the French like to take their time to enjoy life. This mentality might be open to debate since it’s true that it seems counterproductive in the workplace. It’s one of the cultural aspects I love, and I draw inspiration from it to maintain good physical and mental health, enjoying simple moments when I can flâner.

Photo by Marie-Sophie Tékian on Unsplash

Profiter

In English, this term translates as take profit from, or benefit. It’s not all that wrong, but the meaning of this word is deeper than that. We take advantage for our own good, we take benefit from every single thing we have. Profiter de la vie would mean taking advantage of life. A more accurate translation would be “to enjoy and savor life.” Aware of the fact that we have just one life, we should savor the moment of life to do what makes us happy.

The French are ready to fight and go on strikes for more free time and vacation time. For the French, the multiple coffee breaks a day, aka pause café, is crucial. The one-hour lunch break is ingrained in French culture. All these breaks, as well as vacations, are necessary elements for enjoying life. That’s the part I like about the French, taking time to profiter de la vie. When you add the flâneur mentality, it is convincing that the French seem lazy. Compared to the work culture in the U.S., that may be true. However, regarding work productivity, apparently, the French are quite efficient compared to other countries in the world. Perhaps taking time out to enjoy life makes you more efficient at work!

Living in France has allowed me to implement the beautiful parts of the French mentality. I wanted to share with you these words that are unique to French culture, as they teach us to take a step back from what we should be enjoying. Thanks to the mentality of this country, I appreciate every mouthful to savor what I eat. I value the beauty in anything I find during my walks, I take my coffee break times at work to socialize, and I embrace the mentality of profiter de la vie.

If you enjoyed this article and want to read my other work, don’t hesitate to become a member! You can get full access to every story on Medium. Your membership also directly supports other writers and me on the platform. If you use my link, I earn a small commission. Merci, et à bientôt! ありがとうございます!

Life
Travel
Food
Culture
Life Lessons
Recommended from ReadMedium