PageSourceSearch

https://pluto-lang.org/assets/js/8c64e7a6.eea54bcd.js

js pluto-lang.org collected 2026-10-02 05:17:55 UTC 21,354 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkpluto=self.webpackChunkpluto||[]).push([[8823],{2309:(l,s,e)=>{e.r(s),e.d(s,{assets:()=>t,contentTitle:()=>i,default:()=>F,frontMatter:()=>r,metadata:()=>n,toc:()=>a});const n=JSON.parse('{"id":"New Features/Type Hinting","title":"Type Hinting","description":"Type-hinting looks like this:","source":"@site/docs/New Features/Type Hinting.md","sourceDirName":"New Features","slug":"/New Features/Type Hinting","permalink":"/docs/New Features/Type Hinting","draft":false,"unlisted":false,"tags":[],"version":"current","sidebarPosition":1,"frontMatter":{"sidebar_position":1},"sidebar":"tutorialSidebar","previous":{"title":"Ternary Expressions","permalink":"/docs/New Features/Ternary Expressions"},"next":{"title":"Destructuring","permalink":"/docs/New Features/Destructuring"}}');var c=e(4848),o=e(8453);const r={sidebar_position:1},i=void 0,t={},a=[{value:"Primitive Types",id:"primitive-types",level:3},{value:"Multiple Return Values",id:"multiple-return-values",level:3},{value:"Union Types",id:"union-types",level:3},{value:"Complex Table Types",id:"complex-table-types",level:3},{value:"Named Types",id:"named-types",level:3},{value:"Complex Function Types",id:"complex-function-types",level:3},{value:"<code>$declare</code>",id:"declare",level:3},{value:"<code>$getproptype</code>",id:"getproptype",level:3}];function d(l){const s={code:"code",div:"div",h3:"h3",li:"li",p:"p",pre:"pre",span:"span",ul:"ul",...(0,o.R)(),...l.components};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(s.p,{children:"Type-hinting looks like this:"}),"\n",(0,c.jsxs)(s.pre,{className:"shiki monokai",style:{backgroundColor:"#272822",color:"#F8F8F2"},children:[(0,c.jsx)(s.div,{className:"language-id",children:"pluto"}),(0,c.jsx)(s.div,{className:"code-container",children:(0,c.jsx)(s.code,{children:(0,c.jsxs)(s.div,{className:"line",children:[(0,c.jsx)(s.span,{style:{color:"#F92672"},children:"local"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" var"}),(0,c.jsx)(s.span,{style:{color:"#9F570F"},children:":"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#66D9EF",fontStyle:"italic"},children:"string"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#F92672"},children:"="}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#E6DB74"},children:'"hello world"'})]})})})]}),"\n",(0,c.jsx)(s.p,{children:"It works with functions too:"}),"\n",(0,c.jsxs)(s.pre,{className:"shiki monokai",style:{backgroundColor:"#272822",color:"#F8F8F2"},children:[(0,c.jsx)(s.div,{className:"language-id",children:"pluto"}),(0,c.jsx)(s.div,{className:"code-container",children:(0,c.jsxs)(s.code,{children:[(0,c.jsxs)(s.div,{className:"line",children:[(0,c.jsx)(s.span,{style:{color:"#F92672"},children:"local"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#66D9EF",fontStyle:"italic"},children:"function"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#A6E22E"},children:"myfunc"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:"("}),(0,c.jsx)(s.span,{style:{color:"#FD971F",fontStyle:"italic"},children:"a"}),(0,c.jsx)(s.span,{style:{color:"#9F570F"},children:":"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#66D9EF",fontStyle:"italic"},children:"string"}),(0,c.jsx)(s.span,{style:{color:"#9F570F"},children:","}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#FD971F",fontStyle:"italic"},children:"b"}),(0,c.jsx)(s.span,{style:{color:"#9F570F"},children:":"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#66D9EF",fontStyle:"italic"},children:"string"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:")"}),(0,c.jsx)(s.span,{style:{color:"#9F570F"},children:":"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#66D9EF",fontStyle:"italic"},children:"number"})]}),(0,c.jsxs)(s.div,{className:"line",children:[(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:"    "}),(0,c.jsx)(s.span,{style:{color:"#F92672"},children:"return"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#66D9EF"},children:"tonumber"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:"(a) "}),(0,c.jsx)(s.span,{style:{color:"#F92672"},children:"+"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#66D9EF"},children:"tonumber"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:"(b)"})]}),(0,c.jsx)(s.div,{className:"line",children:(0,c.jsx)(s.span,{style:{color:"#F92672"},children:"end"})}),(0,c.jsx)(s.div,{className:"line"}),(0,c.jsxs)(s.div,{className:"line",children:[(0,c.jsx)(s.span,{style:{color:"#66D9EF"},children:"print"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:"("}),(0,c.jsx)(s.span,{style:{color:"#66D9EF"},children:"myfunc"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:"("}),(0,c.jsx)(s.span,{style:{color:"#AE81FF"},children:"1"}),(0,c.jsx)(s.span,{style:{color:"#9F570F"},children:","}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#E6DB74"},children:'"1"'}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:")) "}),(0,c.jsx)(s.span,{style:{color:"#88846F"},children:"-- This will emit a warning for argument type mismatch."})]})]})})]}),"\n",(0,c.jsx)(s.p,{children:"There's no effect on performance. This is implemented entirely during the compilation phase."}),"\n",(0,c.jsx)(s.h3,{id:"primitive-types",children:"Primitive Types"}),"\n",(0,c.jsxs)(s.ul,{children:["\n",(0,c.jsx)(s.li,{children:(0,c.jsx)(s.code,{children:"string"})}),"\n",(0,c.jsxs)(s.li,{children:[(0,c.jsx)(s.code,{children:"number"}),"\n",(0,c.jsxs)(s.ul,{children:["\n",(0,c.jsx)(s.li,{children:(0,c.jsx)(s.code,{children:"int"})}),"\n",(0,c.jsx)(s.li,{children:(0,c.jsx)(s.code,{children:"float"})}),"\n"]}),"\n"]}),"\n",(0,c.jsxs)(s.li,{children:[(0,c.jsx)(s.code,{children:"boolean"}),"/",(0,c.jsx)(s.code,{children:"bool"})]}),"\n",(0,c.jsx)(s.li,{children:(0,c.jsx)(s.code,{children:"function"})}),"\n",(0,c.jsx)(s.li,{children:(0,c.jsx)(s.code,{children:"table"})}),"\n",(0,c.jsx)(s.li,{children:(0,c.jsx)(s.code,{children:"userdata"})}),"\n",(0,c.jsx)(s.li,{children:(0,c.jsx)(s.code,{children:"nil"})}),"\n",(0,c.jsx)(s.li,{children:(0,c.jsx)(s.code,{children:"any"})}),"\n"]}),"\n",(0,c.jsx)(s.h3,{id:"multiple-return-values",children:"Multiple Return Values"}),"\n",(0,c.jsxs)(s.p,{children:["For function return values, there is the ",(0,c.jsx)(s.code,{children:"void"})," hint to indicate 0 return values, as well as the following syntax for 2 or more:"]}),"\n",(0,c.jsxs)(s.pre,{className:"shiki monokai",style:{backgroundColor:"#272822",color:"#F8F8F2"},children:[(0,c.jsx)(s.div,{className:"language-id",children:"pluto"}),(0,c.jsx)(s.div,{className:"code-container",children:(0,c.jsxs)(s.code,{children:[(0,c.jsxs)(s.div,{className:"line",children:[(0,c.jsx)(s.span,{style:{color:"#F92672"},children:"local"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#66D9EF",fontStyle:"italic"},children:"function"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#A6E22E"},children:"get_status"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"}
1,children:"()"}),(0,c.jsx)(s.span,{style:{color:"#9F570F"},children:":"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#66D9EF",fontStyle:"italic"},children:"(bool, string)"})]}),(0,c.jsxs)(s.div,{className:"line",children:[(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:"    "}),(0,c.jsx)(s.span,{style:{color:"#F92672"},children:"return"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#AE81FF"},children:"true"}),(0,c.jsx)(s.span,{style:{color:"#9F570F"},children:","}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#E6DB74"},children:'"OK!"'})]}),(0,c.jsx)(s.div,{className:"line",children:(0,c.jsx)(s.span,{style:{color:"#F92672"},children:"end"})}),(0,c.jsxs)(s.div,{className:"line",children:[(0,c.jsx)(s.span,{style:{color:"#66D9EF"},children:"print"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:"("}),(0,c.jsx)(s.span,{style:{color:"#66D9EF"},children:"get_status"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:"())"})]})]})})]}),"\n",(0,c.jsx)(s.h3,{id:"union-types",children:"Union Types"}),"\n",(0,c.jsxs)(s.p,{children:["Prefix a ",(0,c.jsx)(s.code,{children:"?"})," to indicate void-able types, e.g. ",(0,c.jsx)(s.code,{children:"?string"})," indicates that it may be absent, nil, or a string."]}),"\n",(0,c.jsxs)(s.p,{children:["You can also use ",(0,c.jsx)(s.code,{children:"|"})," to delimit alternatives, e.g. ",(0,c.jsx)(s.code,{children:"string|int"})," indicates that it may be a string or an int."]}),"\n",(0,c.jsxs)(s.p,{children:["Putting all of this together, we could also have e.g. ",(0,c.jsx)(s.code,{children:"?string|int"})," to indicate that it may be absent, nil, a string, or an int."]}),"\n",(0,c.jsx)(s.h3,{id:"complex-table-types",children:"Complex Table Types"}),"\n",(0,c.jsx)(s.p,{children:"You can specify type requirements for fields inside of tables like so:"}),"\n",(0,c.jsxs)(s.pre,{className:"shiki monokai",style:{backgroundColor:"#272822",color:"#F8F8F2"},children:[(0,c.jsx)(s.div,{className:"language-id",children:"pluto"}),(0,c.jsx)(s.div,{className:"code-container",children:(0,c.jsx)(s.code,{children:(0,c.jsxs)(s.div,{className:"line",children:[(0,c.jsx)(s.span,{style:{color:"#F92672"},children:"local"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" point"}),(0,c.jsx)(s.span,{style:{color:"#9F570F"},children:":"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" { x"}),(0,c.jsx)(s.span,{style:{color:"#9F570F"},children:":"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#66D9EF",fontStyle:"italic"},children:"number"}),(0,c.jsx)(s.span,{style:{color:"#9F570F"},children:","}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" y"}),(0,c.jsx)(s.span,{style:{color:"#9F570F"},children:":"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#66D9EF",fontStyle:"italic"},children:"number"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" } "}),(0,c.jsx)(s.span,{style:{color:"#F92672"},children:"="}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" { x "}),(0,c.jsx)(s.span,{style:{color:"#F92672"},children:"="}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#AE81FF"},children:"1"}),(0,c.jsx)(s.span,{style:{color:"#9F570F"},children:","}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" y "}),(0,c.jsx)(s.span,{style:{color:"#F92672"},children:"="}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#AE81FF"},children:"2"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" }"})]})})})]}),"\n",(0,c.jsx)(s.h3,{id:"named-types",children:"Named Types"}),"\n",(0,c.jsxs)(s.p,{children:["You can use ",(0,c.jsx)(s.code,{children:"$type"})," to assign a name to a type."]}),"\n",(0,c.jsxs)(s.pre,{className:"shiki monokai",style:{backgroundColor:"#272822",color:"#F8F8F2"},children:[(0,c.jsx)(s.div,{className:"language-id",children:"pluto"}),(0,c.jsx)(s.div,{className:"code-container",children:(0,c.jsxs)(s.code,{children:[(0,c.jsxs)(s.div,{className:"line",children:[(0,c.jsx)(s.span,{style:{color:"#66D9EF",fontStyle:"italic"},children:"$type"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#A6E22E"},children:"Point"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#F92672"},children:"="}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" { x"}),(0,c.jsx)(s.span,{style:{color:"#9F570F"},children:":"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#66D9EF",fontStyle:"italic"},children:"number"}),(0,c.jsx)(s.span,{style:{color:"#9F570F"},children:","}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" y"}),(0,c.jsx)(s.span,{style:{color:"#9F570F"},children:":"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#66D9EF",fontStyle:"italic"},children:"number"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" }"})]}),(0,c.jsx)(s.div,{className:"line"}),(0,c.jsxs)(s.div,{className:"line",children:[(0,c.jsx)(s.span,{style:{color:"#F92672"},children:"local"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" p"}),(0,c.jsx)(s.span,{style:{color:"#9F570F"},children:":"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#66D9EF",fontStyle:"italic"},children:"Point"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#F92672"},children:"="}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" { x "}),(0,c.jsx)(s.span,{style:{color:"#F92672"},children:"="}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#AE81FF"},children:"1"}),(0,c.jsx)(s.span,{style:{color:"#9F570F"},children:","}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" y "}),(0,c.jsx)(s.span,{style:{color:"#F92672"},children:"="}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#AE81FF"},children:"2"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" }"})]})]})})]}),"\n",(0,c.jsx)(s.h3,{id:"complex-function-types",children:"Complex Function Types"}),"\n",(0,c.jsx)(s.p,{children:"You can also specify type expectations for the parameters and/or return values of functions."}),"\n",(0,c.jsxs)(s.pre,{className:"shiki monokai",style:{backgroundColor:"#272822",color:"#F8F8F2"},children:[(0,c.jsx)(s.div,{className:"language-id",children:"pluto"}),(0,c.jsx)(s.div,{className:"code-container",children:(0,c.jsxs)(s.code,{children:[(0,c.jsxs)(s.div,{className:"line",children:[(0,c.jsx)(s.span,{style:{color:"#66D9EF",fontStyle:"italic"},children:"$type"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#A6E22E"},children:"LogCallback"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#F92672"},children:"="}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#66D9EF",fontStyle:"italic"},children:"function"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:"("}),(0,c.jsx)(s.span,{style:{color:"#FD971F",fontStyle:"italic"},children:"msg"}),(0,c.jsx)(s.span,{style:{color:"#9F570F"},children:":"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#66D9EF",fontStyle:"italic"},children:"string"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:")"}),(0,c.jsx)(s.span,{style:{color:"#9F570F"},children:":"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#66D9EF",fontStyle:"italic"},children:"void"})]}),(0,c.jsx)(s.div,{className:"line"}),(0,c.jsxs)(s.div,{className:"line",children:[(0,c.jsx)(s.span,{style:{color:"#66D9EF",fontStyle:"italic"},children:"function"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#A6E22E"},children:"write_env"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:"("}),(0,c.jsx)(s.span,{style:{color:"#FD971F",fontStyle:"italic"},children:"log"}),(0,c.jsx)(s.span,{style:{color:"#9F570F"},children:":"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#66D9EF",fontStyle:"italic"},children:"LogCallback"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:")"})]}),(0,c.jsxs)(s.div,{className:"line",children:[(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:"    "}),(0,c.jsx)(s.span,{style:{color:"#66D9EF"},children:"log"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:"("}),(0,c.jsx)(s.span,{style:{color:"#66D9EF"},children:"_VERSION"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:")"})]}),(0,c.jsxs)(s.div,{className:"line",children:[(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:"    "}),(0,c.jsx)(s.span,{style:{color:"#66D9EF"},children:"log"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:"("}),(0,c.jsx)(s.span,{style:{color:"#66D9EF"},children:"_PVERSION"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:")"})]}),(0,c.jsx)(s.div,{className:"line",children:(0,c.jsx)(s.span,{style:{color:"#F92672"},children:"end"})}),(0,c.jsx)(s.div,{className:"line"}),(0,c.jsxs)(s.div,{className:"line",children:[(0,c.jsx)(s.span,{style:{color:"#66D9EF"},children:"write_env"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:"(print)"})]})]})})]}),"\n",(0,c.jsx)(s.h3,{id:"declare",children:(0,c.jsx)(s.code,{children:"$declare"})}),"\n",(0,c.jsxs)(s.p,{children:["The parser can only do typechecking for what it can see, so ",(0,c.jsx)(s.code,{children:"$declare"})," allows you to directly set the type of globals."]}),"\n",(0,c.jsxs)(s.pre,{className:"shiki monokai",style:{backgroundColor:"#272822",color:"#F8F8F2"},children:[(0,c.jsx)(s.div,{className:"language-id",children:"pluto"}),(0,c.jsx)(s.div,{className:"code-container",children:(0,c.jsx)(s.code,{children:(0,c.jsxs)(s.div,{className:"line",children:[(0,c.jsx)(s.span,{style:{color:"#F92672"},children:"$declare"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" _VERSION"}),(0,c.jsx)(s.span,{style:{color:"#9F570F"},children:":"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#66D9EF",fontStyle:"italic"},children:"string"})]})})})]}),"\n",(0,c.jsxs)(s.pre,{className:"shiki monokai",style:{backgroundColor:"#272822",color:"#F8F8F2"},children:[(0,c.jsx)(s.div,{className:"language-id",children:"pluto"}),(0,c.jsx)(s.div,{className:"code-container",children:(0,c.jsx)(s.code,{children:(0,c.jsxs)(s.div,{className:"line",children:[(0,c.jsx)(s.span,{style:{color:"#F92672"},children:"$declare"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#66D9EF",fontStyle:"italic"},children:"function"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#A6E22E"},children:"tonumber"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:"("}),(0,c.jsx)(s.span,{style:{color:"#FD971F",fontStyle:"italic"},children:"str"}),(0,c.jsx)(s.span,{style:{color:"#9F570F"},children:":"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#66D9EF",fontStyle:"italic"},children:"string"}),(0,c.jsx)(s.span,{style:{color:"#9F570F"},children:","}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#FD971F",fontStyle:"italic"},children:"base"}),(0,c.jsx)(s.span,{style:{color:"#9F570F"},children:":"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#66D9EF",fontStyle:"italic"},children:"?number"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:")"}),(0,c.jsx)(s.span,{style:{color:"#9F570F"},children:":"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#66D9EF",fontStyle:"italic"},children:"number"})]})})})]}),"\n",(0,c.jsx)(s.h3,{id:"getproptype",children:(0,c.jsx)(s.code,{children:"$getproptype"})}),"\n",(0,c.jsxs)(s.p,{children:["If you want to know what type the parser prop
1agation has detected for a given variable, you can use ",(0,c.jsx)(s.code,{children:"$getproptype"})," to ask it:"]}),"\n",(0,c.jsxs)(s.pre,{className:"shiki monokai",style:{backgroundColor:"#272822",color:"#F8F8F2"},children:[(0,c.jsx)(s.div,{className:"language-id",children:"pluto"}),(0,c.jsx)(s.div,{className:"code-container",children:(0,c.jsxs)(s.code,{children:[(0,c.jsxs)(s.div,{className:"line",children:[(0,c.jsx)(s.span,{style:{color:"#F92672"},children:"local"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" x "}),(0,c.jsx)(s.span,{style:{color:"#F92672"},children:"="}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:" "}),(0,c.jsx)(s.span,{style:{color:"#E6DB74"},children:'"hello"'})]}),(0,c.jsxs)(s.div,{className:"line",children:[(0,c.jsx)(s.span,{style:{color:"#66D9EF"},children:"print"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:"("}),(0,c.jsx)(s.span,{style:{color:"#F92672"},children:"$"}),(0,c.jsx)(s.span,{style:{color:"#66D9EF"},children:"getproptype"}),(0,c.jsx)(s.span,{style:{color:"#F8F8F2"},children:"(x)) "}),(0,c.jsx)(s.span,{style:{color:"#88846F"},children:"--\x3e string"})]})]})})]}),"\n",(0,c.jsx)(s.p,{children:"Note that the return value of this function should not be relied upon."})]})}function F(l={}){const{wrapper:s}={...(0,o.R)(),...l.components};return s?(0,c.jsx)(s,{...l,children:(0,c.jsx)(d,{...l})}):d(l)}},8453:(l,s,e)=>{e.d(s,{R:()=>r,x:()=>i});var n=e(6540);const c={},o=n.createContext(c);function r(l){const s=n.useContext(o);return n.useMemo((function(){return"function"==typeof l?l(s):{...s,...l}}),[s,l])}function i(l){let s;return s=l.disableParentContext?"function"==typeof l.components?l.components(c):l.components||c:r(l.components),n.createElement(o.Provider,{value:s},l.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.