PageSourceSearch

https://pluto-lang.org/assets/js/ed6b6a43.2c933ce4.js

js pluto-lang.org collected 2026-10-02 05:16:35 UTC 16,604 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkpluto=self.webpackChunkpluto||[]).push([[1680],{1403:(s,e,l)=>{l.r(e),l.d(e,{assets:()=>a,contentTitle:()=>i,default:()=>t,frontMatter:()=>o,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"New Features/Enumerations","title":"Enumerations","description":"Pluto adds the following syntax:","source":"@site/docs/New Features/Enumerations.md","sourceDirName":"New Features","slug":"/New Features/Enumerations","permalink":"/docs/New Features/Enumerations","draft":false,"unlisted":false,"tags":[],"version":"current","sidebarPosition":2,"frontMatter":{"sidebar_position":2},"sidebar":"tutorialSidebar","previous":{"title":"Destructuring","permalink":"/docs/New Features/Destructuring"},"next":{"title":"Export Modifier","permalink":"/docs/New Features/Export Modifier"}}');var c=l(4848),r=l(8453);const o={sidebar_position:2},i=void 0,a={},d=[{value:"Scoped Enums",id:"scoped-enums",level:2},{value:"Reflection",id:"reflection",level:2},{value:"Anonymous Enums",id:"anonymous-enums",level:2},{value:"Using Compatibility Mode?",id:"using-compatibility-mode",level:2}];function F(s){const e={code:"code",div:"div",h2:"h2",p:"p",pre:"pre",span:"span",...(0,r.R)(),...s.components};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(e.p,{children:"Pluto adds the following syntax:"}),"\n",(0,c.jsxs)(e.pre,{className:"shiki monokai",style:{backgroundColor:"#272822",color:"#F8F8F2"},children:[(0,c.jsx)(e.div,{className:"language-id",children:"pluto"}),(0,c.jsx)(e.div,{className:"code-container",children:(0,c.jsxs)(e.code,{children:[(0,c.jsxs)(e.div,{className:"line",children:[(0,c.jsx)(e.span,{style:{color:"#66D9EF",fontStyle:"italic"},children:"enum"}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(e.span,{style:{color:"#A6E22E"},children:"MyEnum"}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(e.span,{style:{color:"#F92672"},children:"begin"})]}),(0,c.jsxs)(e.div,{className:"line",children:[(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:"    OPTION_1"}),(0,c.jsx)(e.span,{style:{color:"#9F570F"},children:","})]}),(0,c.jsxs)(e.div,{className:"line",children:[(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:"    OPTION_2"}),(0,c.jsx)(e.span,{style:{color:"#9F570F"},children:","})]}),(0,c.jsx)(e.div,{className:"line",children:(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:"    OPTION_3"})}),(0,c.jsx)(e.div,{className:"line",children:(0,c.jsx)(e.span,{style:{color:"#F92672"},children:"end"})}),(0,c.jsx)(e.div,{className:"line"}),(0,c.jsxs)(e.div,{className:"line",children:[(0,c.jsx)(e.span,{style:{color:"#66D9EF"},children:"assert"}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:"(OPTION_1 "}),(0,c.jsx)(e.span,{style:{color:"#F92672"},children:"=="}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(e.span,{style:{color:"#AE81FF"},children:"1"}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:")"})]}),(0,c.jsxs)(e.div,{className:"line",children:[(0,c.jsx)(e.span,{style:{color:"#66D9EF"},children:"assert"}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:"(OPTION_2 "}),(0,c.jsx)(e.span,{style:{color:"#F92672"},children:"=="}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(e.span,{style:{color:"#AE81FF"},children:"2"}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:")"})]}),(0,c.jsxs)(e.div,{className:"line",children:[(0,c.jsx)(e.span,{style:{color:"#66D9EF"},children:"assert"}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:"(OPTION_3 "}),(0,c.jsx)(e.span,{style:{color:"#F92672"},children:"=="}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(e.span,{style:{color:"#AE81FF"},children:"3"}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:")"})]})]})})]}),"\n",(0,c.jsx)(e.p,{children:"Enums can start at a base number, and increment from there."}),"\n",(0,c.jsxs)(e.pre,{className:"shiki monokai",style:{backgroundColor:"#272822",color:"#F8F8F2"},children:[(0,c.jsx)(e.div,{className:"language-id",children:"pluto"}),(0,c.jsx)(e.div,{className:"code-container",children:(0,c.jsxs)(e.code,{children:[(0,c.jsxs)(e.div,{className:"line",children:[(0,c.jsx)(e.span,{style:{color:"#66D9EF",fontStyle:"italic"},children:"enum"}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(e.span,{style:{color:"#A6E22E"},children:"MyEnum"}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(e.span,{style:{color:"#F92672"},children:"begin"})]}),(0,c.jsxs)(e.div,{className:"line",children:[(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:"    OPTION_1 "}),(0,c.jsx)(e.span,{style:{color:"#F92672"},children:"="}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(e.span,{style:{color:"#AE81FF"},children:"0"}),(0,c.jsx)(e.span,{style:{color:"#9F570F"},children:","})]}),(0,c.jsxs)(e.div,{className:"line",children:[(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:"    OPTION_2"}),(0,c.jsx)(e.span,{style:{color:"#9F570F"},children:","})]}),(0,c.jsxs)(e.div,{className:"line",children:[(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:"    OPTION_3 "}),(0,c.jsx)(e.span,{style:{color:"#F92672"},children:"="}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(e.span,{style:{color:"#AE81FF"},children:"5"}),(0,c.jsx)(e.span,{style:{color:"#9F570F"},children:","})]}),(0,c.jsx)(e.div,{className:"line",children:(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:"    OPTION_4"})}),(0,c.jsx)(e.div,{className:"line",children:(0,c.jsx)(e.span,{style:{color:"#F92672"},children:"end"})}),(0,c.jsx)(e.div,{className:"line"}),(0,c.jsxs)(e.div,{className:"line",children:[(0,c.jsx)(e.span,{style:{color:"#66D9EF"},children:"assert"}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:"(OPTION_1 "}),(0,c.jsx)(e.span,{style:{color:"#F92672"},children:"=="}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(e.span,{style:{color:"#AE81FF"},children:"0"}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:")"})]}),(0,c.jsxs)(e.div,{className:"line",children:[(0,c.jsx)(e.span,{style:{color:"#66D9EF"},children:"assert"}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:"(OPTION_2 "}),(0,c.jsx)(e.span,{style:{color:"#F92672"},children:"=="}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(e.span,{style:{color:"#AE81FF"},children:"1"}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:")"})]}),(0,c.jsxs)(e.div,{className:"line",children:[(0,c.jsx)(e.span,{style:{color:"#66D9EF"},children:"assert"}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:"(OPTION_3 "}),(0,c.jsx)(e.span,{style:{color:"#F92672"},children:"=="}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(e.span,{style:{color:"#AE81FF"},children:"5"}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:")"})]}),(0,c.jsxs)(e.div,{className:"line",children:[(0,c.jsx)(e.span,{style:{color:"#66D9EF"},children:"assert"}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:"(OPTION_4 "}),(0,c.jsx)(e.span,{style:{color:"#F92672"},children:"=="}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(e.span,{style:{color:"#AE81FF"},children:"6"}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:")"})]})]})})]}),"\n",(0,c.jsx)(e.p,{children:"Since this enum has a name, we can also access its enumerators with that:"}),"\n",(0,c.jsxs)(e.pre,{className:"shiki monokai",style:{backgroundColor:"#272822",color:"#F8F8F2"},children:[(0,c.jsx)(e.div,{className:"language-id",children:"pluto"}),(0,c.jsx)(e.div,{className:"code-container",children:(0,c.jsx)(e.code,{children:(0,c.jsxs)(e.div,{className:"line",children:[(0,c.jsx)(e.span,{style:{color:"#66D9EF"},children:"assert"}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:"(MyEnum"}),(0,c.jsx)(e.span,{style:{color:"#9F570F"},children:"."}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:"OPTION_1 "}),(0,c.jsx)(e.span,{style:{color:"#F92672"},children:"=="}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(e.span,{style:{color:"#AE81FF"},children:"0"}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:")"})]})})})]}),"\n",(0,c.jsx)(e.h2,{id:"scoped-enums",children:"Scoped Enums"}),"\n",(0,c.jsx)(e.p,{children:"You can force usage of the ENUM.ENUMERATOR 
1syntax by using 'enum class':"}),"\n",(0,c.jsxs)(e.pre,{className:"shiki monokai",style:{backgroundColor:"#272822",color:"#F8F8F2"},children:[(0,c.jsx)(e.div,{className:"language-id",children:"pluto"}),(0,c.jsx)(e.div,{className:"code-container",children:(0,c.jsxs)(e.code,{children:[(0,c.jsxs)(e.div,{className:"line",children:[(0,c.jsx)(e.span,{style:{color:"#66D9EF",fontStyle:"italic"},children:"enum class"}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(e.span,{style:{color:"#A6E22E"},children:"MyEnum"}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(e.span,{style:{color:"#F92672"},children:"begin"})]}),(0,c.jsxs)(e.div,{className:"line",children:[(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:"    OPTION_1"}),(0,c.jsx)(e.span,{style:{color:"#9F570F"},children:","})]}),(0,c.jsxs)(e.div,{className:"line",children:[(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:"    OPTION_2"}),(0,c.jsx)(e.span,{style:{color:"#9F570F"},children:","})]}),(0,c.jsx)(e.div,{className:"line",children:(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:"    OPTION_3"})}),(0,c.jsx)(e.div,{className:"line",children:(0,c.jsx)(e.span,{style:{color:"#F92672"},children:"end"})}),(0,c.jsx)(e.div,{className:"line"}),(0,c.jsxs)(e.div,{className:"line",children:[(0,c.jsx)(e.span,{style:{color:"#66D9EF"},children:"assert"}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:"(OPTION_1 "}),(0,c.jsx)(e.span,{style:{color:"#F92672"},children:"=="}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(e.span,{style:{color:"#AE81FF"},children:"nil"}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:")"})]}),(0,c.jsxs)(e.div,{className:"line",children:[(0,c.jsx)(e.span,{style:{color:"#66D9EF"},children:"assert"}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:"(MyEnum"}),(0,c.jsx)(e.span,{style:{color:"#9F570F"},children:"."}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:"OPTION_1 "}),(0,c.jsx)(e.span,{style:{color:"#F92672"},children:"=="}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(e.span,{style:{color:"#AE81FF"},children:"1"}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:")"})]})]})})]}),"\n",(0,c.jsx)(e.h2,{id:"reflection",children:"Reflection"}),"\n",(0,c.jsx)(e.p,{children:"When you have a named enum, not only can you get its enumerators, but also reflect upon it with some methods:"}),"\n",(0,c.jsxs)(e.pre,{className:"shiki monokai",style:{backgroundColor:"#272822",color:"#F8F8F2"},children:[(0,c.jsx)(e.div,{className:"language-id",children:"pluto"}),(0,c.jsx)(e.div,{className:"code-container",children:(0,c.jsxs)(e.code,{children:[(0,c.jsxs)(e.div,{className:"line",children:[(0,c.jsx)(e.span,{style:{color:"#66D9EF",fontStyle:"italic"},children:"enum"}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(e.span,{style:{color:"#A6E22E"},children:"MyEnum"}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(e.span,{style:{color:"#F92672"},children:"begin"})]}),(0,c.jsxs)(e.div,{className:"line",children:[(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:"    OPTION_1"}),(0,c.jsx)(e.span,{style:{color:"#9F570F"},children:","})]}),(0,c.jsxs)(e.div,{className:"line",children:[(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:"    OPTION_2"}),(0,c.jsx)(e.span,{style:{color:"#9F570F"},children:","})]}),(0,c.jsx)(e.div,{className:"line",children:(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:"    OPTION_3"})}),(0,c.jsx)(e.div,{className:"line",children:(0,c.jsx)(e.span,{style:{color:"#F92672"},children:"end"})}),(0,c.jsx)(e.div,{className:"line"}),(0,c.jsxs)(e.div,{className:"line",children:[(0,c.jsx)(e.span,{style:{color:"#F92672"},children:"for"}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:" k"}),(0,c.jsx)(e.span,{style:{color:"#9F570F"},children:","}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:" v "}),(0,c.jsx)(e.span,{style:{color:"#F92672"},children:"in"}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:" MyEnum"}),(0,c.jsx)(e.span,{style:{color:"#9F570F"},children:":"}),(0,c.jsx)(e.span,{style:{color:"#66D9EF"},children:"kvmap"}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"}
1,children:"() "}),(0,c.jsx)(e.span,{style:{color:"#F92672"},children:"do"})]}),(0,c.jsxs)(e.div,{className:"line",children:[(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:"    "}),(0,c.jsx)(e.span,{style:{color:"#66D9EF"},children:"print"}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:"(k"}),(0,c.jsx)(e.span,{style:{color:"#9F570F"},children:","}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:" v) "}),(0,c.jsx)(e.span,{style:{color:"#88846F"},children:'-- "OPTION_1    1" ...'})]}),(0,c.jsx)(e.div,{className:"line",children:(0,c.jsx)(e.span,{style:{color:"#F92672"},children:"end"})})]})})]}),"\n",(0,c.jsxs)(e.p,{children:["The following methods are available: ",(0,c.jsx)(e.code,{children:":names()"}),", ",(0,c.jsx)(e.code,{children:":values()"}),", ",(0,c.jsx)(e.code,{children:":kvmap()"}),", ",(0,c.jsx)(e.code,{children:":vkmap()"})]}),"\n",(0,c.jsx)(e.h2,{id:"anonymous-enums",children:"Anonymous Enums"}),"\n",(0,c.jsx)(e.p,{children:"Enums can also be anonymous:"}),"\n",(0,c.jsxs)(e.pre,{className:"shiki monokai",style:{backgroundColor:"#272822",color:"#F8F8F2"},children:[(0,c.jsx)(e.div,{className:"language-id",children:"pluto"}),(0,c.jsx)(e.div,{className:"code-container",children:(0,c.jsxs)(e.code,{children:[(0,c.jsxs)(e.div,{className:"line",children:[(0,c.jsx)(e.span,{style:{color:"#66D9EF",fontStyle:"italic"},children:"enum"}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(e.span,{style:{color:"#F92672"},children:"begin"})]}),(0,c.jsxs)(e.div,{className:"line",children:[(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:"    OPTION_1"}),(0,c.jsx)(e.span,{style:{color:"#9F570F"},children:","})]}),(0,c.jsxs)(e.div,{className:"line",children:[(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:"    OPTION_2"}),(0,c.jsx)(e.span,{style:{color:"#9F570F"},children:","})]}),(0,c.jsx)(e.div,{className:"line",children:(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:"    OPTION_3"})}),(0,c.jsx)(e.div,{className:"line",children:(0,c.jsx)(e.span,{style:{color:"#F92672"},children:"end"})}),(0,c.jsx)(e.div,{className:"line"}),(0,c.jsxs)(e.div,{className:"line",children:[(0,c.jsx)(e.span,{style:{color:"#66D9EF"},children:"assert"}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:"(OPTION_1 "}),(0,c.jsx)(e.span,{style:{color:"#F92672"},children:"=="}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(e.span,{style:{color:"#AE81FF"},children:"1"}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:")"})]}),(0,c.jsxs)(e.div,{className:"line",children:[(0,c.jsx)(e.span,{style:{color:"#66D9EF"},children:"assert"}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:"(OPTION_2 "}),(0,c.jsx)(e.span,{style:{color:"#F92672"},children:"=="}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(e.span,{style:{color:"#AE81FF"},children:"2"}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:")"})]}),(0,c.jsxs)(e.div,{className:"line",children:[(0,c.jsx)(e.span,{style:{color:"#66D9EF"},children:"assert"}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:"(OPTION_3 "}),(0,c.jsx)(e.span,{style:{color:"#F92672"},children:"=="}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(e.span,{style:{color:"#AE81FF"},children:"3"}),(0,c.jsx)(e.span,{style:{color:"#F8F8F2"},children:")"})]})]})})]}),"\n",(0,c.jsx)(e.h2,{id:"using-compatibility-mode",children:"Using Compatibility Mode?"}),"\n",(0,c.jsxs)(e.p,{children:["You may need to use ",(0,c.jsx)(e.code,{children:"pluto_enum"})," instead of ",(0,c.jsx)(e.code,{children:"enum"}),". Alternatively, ",(0,c.jsx)(e.code,{children:"pluto_use enum"})," will enable the keyword independently of environment settings."]})]})}function t(s={}){const{wrapper:e}={...(0,r.R)(),...s.components};return e?(0,c.jsx)(e,{...s,children:(0,c.jsx)(F,{...s})}):F(s)}},8453:(s,e,l)=>{l.d(e,{R:()=>o,x:()=>i});var n=l(6540);const c={},r=n.createContext(c);function o(s){const e=n.useContext(r);return n.useMemo((function(){return"function"==typeof s?s(e):{...e,...s}}),[e,s])}function i(s){let e;return e=s.disableParentContext?"function"==typeof s.components?s.components(c):s.components||c:o(s.components),n.createElement(r.Provider,{value:e},s.children)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.