mirror of
https://github.com/falsycat/ar.falsy.cat.git
synced 2024-12-27 08:54:51 +00:00
109 lines
30 KiB
HTML
109 lines
30 KiB
HTML
<!doctype html><html lang=en><head><meta charset=utf-8><meta name=description content="概要 Google製プログラミング言語 flutterのための言語 日本語資料少なめ オブジェクト指向 特徴 undefined behaviorは無い Null safety 型名に?を付ければNull許容型になる Null許容型に対してはNullチェックをしないとコンパイラがキレる 整数値以外は参照型 GC(mark & sweep)搭載 デストラクタは無さそう,そもそもmark & sweepでデストラクタは信頼できない コンストラクタが書きやすい わざわざメンバ変数と同じ名前の引数を書いて,代入して,,,ということをしなくてもいい 静的解析が強め 文法 大体は既存のやつと同じ 文末セミコロン必須 関数呼び出しの実引数リストでもケツカンマ許容 変数修飾子 型が自明な場合,型名は省略できる 省略できる場合は省略することが推奨される 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 // コンパイル時定数 const int x = 0; const x = 0; // 再代入不可能変数 final int x = 0; final x = 0; // 再代入可能変数 var int x = 0; var x = 0; // 遅延初期化変数 late int x; late final int x; final: 再代入不可能変数 値型の変数に対しては,値の変更を禁止する 参照型の変数に対しては,参照先の変更のみを禁止する dartでは,参照先のオブジェクトの変更を禁止することはできない late: 遅延初期化 変数の初期化を遅延させることができる 実質的にはNull safetyの無いNull許容型 late final修飾子によって複数回の代入をコンパイルエラーにできる ただし静的解析の精度は微妙なので,絶対に2回目の代入ができなくなるわけではない Null safety Null許容型に対しては,Nullを扱いやすくするための演算子が使える 関数の中で,変数に対して一度nullチェックをした場合,以降,その変数はNull許容型でないものとして扱える 1 2 3 4 5 6 7 8 9 10 11 12 13 14 (T?"><meta property="og:title" content="dart言語"><meta property="og:description" content="概要 Google製プログラミング言語 flutterのための言語 日本語資料少なめ オブジェクト指向 特徴 undefined behaviorは無い Null safety 型名に?を付ければNull許容型になる Null許容型に対してはNullチェックをしないとコンパイラがキレる 整数値以外は参照型 GC(mark & sweep)搭載 デストラクタは無さそう,そもそもmark & sweepでデストラクタは信頼できない コンストラクタが書きやすい わざわざメンバ変数と同じ名前の引数を書いて,代入して,,,ということをしなくてもいい 静的解析が強め 文法 大体は既存のやつと同じ 文末セミコロン必須 関数呼び出しの実引数リストでもケツカンマ許容 変数修飾子 型が自明な場合,型名は省略できる 省略できる場合は省略することが推奨される 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 // コンパイル時定数 const int x = 0; const x = 0; // 再代入不可能変数 final int x = 0; final x = 0; // 再代入可能変数 var int x = 0; var x = 0; // 遅延初期化変数 late int x; late final int x; final: 再代入不可能変数 値型の変数に対しては,値の変更を禁止する 参照型の変数に対しては,参照先の変更のみを禁止する dartでは,参照先のオブジェクトの変更を禁止することはできない late: 遅延初期化 変数の初期化を遅延させることができる 実質的にはNull safetyの無いNull許容型 late final修飾子によって複数回の代入をコンパイルエラーにできる ただし静的解析の精度は微妙なので,絶対に2回目の代入ができなくなるわけではない Null safety Null許容型に対しては,Nullを扱いやすくするための演算子が使える 関数の中で,変数に対して一度nullチェックをした場合,以降,その変数はNull許容型でないものとして扱える 1 2 3 4 5 6 7 8 9 10 11 12 13 14 (T?"><meta property="og:type" content="website"><meta property="og:image" content="https://ar.falsy.cat/icon.png"><meta property="og:url" content="https://ar.falsy.cat/note/info-tech/dart/"><meta property="og:width" content="200"><meta property="og:height" content="200"><meta name=twitter:card content="summary"><meta name=twitter:title content="dart言語"><meta name=twitter:description content="概要 Google製プログラミング言語 flutterのための言語 日本語資料少なめ オブジェクト指向 特徴 undefined behaviorは無い Null safety 型名に?を付ければNull許容型になる Null許容型に対してはNullチェックをしないとコンパイラがキレる 整数値以外は参照型 GC(mark & sweep)搭載 デストラクタは無さそう,そもそもmark & sweepでデストラクタは信頼できない コンストラクタが書きやすい わざわざメンバ変数と同じ名前の引数を書いて,代入して,,,ということをしなくてもいい 静的解析が強め 文法 大体は既存のやつと同じ 文末セミコロン必須 関数呼び出しの実引数リストでもケツカンマ許容 変数修飾子 型が自明な場合,型名は省略できる 省略できる場合は省略することが推奨される 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 // コンパイル時定数 const int x = 0; const x = 0; // 再代入不可能変数 final int x = 0; final x = 0; // 再代入可能変数 var int x = 0; var x = 0; // 遅延初期化変数 late int x; late final int x; final: 再代入不可能変数 値型の変数に対しては,値の変更を禁止する 参照型の変数に対しては,参照先の変更のみを禁止する dartでは,参照先のオブジェクトの変更を禁止することはできない late: 遅延初期化 変数の初期化を遅延させることができる 実質的にはNull safetyの無いNull許容型 late final修飾子によって複数回の代入をコンパイルエラーにできる ただし静的解析の精度は微妙なので,絶対に2回目の代入ができなくなるわけではない Null safety Null許容型に対しては,Nullを扱いやすくするための演算子が使える 関数の中で,変数に対して一度nullチェックをした場合,以降,その変数はNull許容型でないものとして扱える 1 2 3 4 5 6 7 8 9 10 11 12 13 14 (T?"><meta name=twitter:image content="https://ar.falsy.cat/icon.png"><title>dart言語</title><meta name=viewport content="width=device-width,initial-scale=1"><link rel="shortcut icon" type=image/png href=https://ar.falsy.cat//icon.png><link href=https://ar.falsy.cat/styles.80333fa2099c0bee674efa435fde378c.min.css rel=stylesheet><link href=https://ar.falsy.cat/styles/_light_syntax.86a48a52faebeaaf42158b72922b1c90.min.css rel=stylesheet id=theme-link><script src=https://ar.falsy.cat/js/darkmode.557cde7fcc3511a3d7ca8545ecd46d77.min.js></script>
|
||
<script src=https://ar.falsy.cat/js/util.00639692264b21bc3ee219733d38a8be.min.js></script>
|
||
<link rel=preload href=https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/katex.min.css as=style onload='this.onload=null,this.rel="stylesheet"' integrity=sha384-R4558gYOUz8mP9YWpZJjofhk+zx0AS11p36HnD2ZKj/6JR5z27gSSULCNHIRReVs crossorigin=anonymous><script defer src=https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/katex.min.js integrity=sha384-z1fJDqw8ZApjGO3/unPWUPsIymfsJmyrDVWC8Tv/a1HeOtGmkwNd/7xUS0Xcnvsx crossorigin=anonymous></script>
|
||
<script defer src=https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/contrib/auto-render.min.js integrity=sha384-+XBljXPPiv+OzfbB3cVmLHf4hdUFHlWNZN5spNQ7rmHTXpd7WvJum6fIACpNNfIR crossorigin=anonymous></script>
|
||
<script defer src=https://cdn.jsdelivr.net/npm/katex@0.16.2/dist/contrib/copy-tex.min.js integrity=sha384-ww/583aHhxWkz5DEVn6OKtNiIaLi2iBRNZXfJRiY1Ai7tnJ9UXpEsyvOITVpTl4A crossorigin=anonymous></script>
|
||
<script src=https://cdn.jsdelivr.net/npm/@floating-ui/core@1.2.1></script>
|
||
<script src=https://cdn.jsdelivr.net/npm/@floating-ui/dom@1.2.1></script>
|
||
<script defer src=https://ar.falsy.cat/js/popover.0094f98610bd792200f053b9a02426a4.min.js></script>
|
||
<script defer src=https://ar.falsy.cat/js/code-title.ce4a43f09239a9efb48fee342e8ef2df.min.js></script>
|
||
<script defer src=https://ar.falsy.cat/js/clipboard.2913da76d3cb21c5deaa4bae7da38c9f.min.js></script>
|
||
<script defer src=https://ar.falsy.cat/js/callouts.7723cac461d613d118ee8bb8216b9838.min.js></script>
|
||
<script>const SEARCH_ENABLED=!1,LATEX_ENABLED=!0,PRODUCTION=!0,BASE_URL="https://ar.falsy.cat/",fetchData=Promise.all([fetch("https://ar.falsy.cat/indices/linkIndex.1536ace533d46c5e6ba5603af477ff2f.min.json").then(e=>e.json()).then(e=>({index:e.index,links:e.links})),fetch("https://ar.falsy.cat/indices/contentIndex.2f65e8b38dddb7b337aa9b63a35c81e5.min.json").then(e=>e.json())]).then(([{index:e,links:t},n])=>({index:e,links:t,content:n})),render=()=>{const e=new URL(BASE_URL),t=e.pathname,n=window.location.pathname,s=t==n;addCopyButtons(),addTitleToCodeBlocks(),addCollapsibleCallouts(),initPopover("https://ar.falsy.cat",!0);const o=document.getElementById("footer");if(o){const e=document.getElementById("graph-container");if(!e)return requestAnimationFrame(render);e.textContent="";const t=s&&!0;drawGraph("https://ar.falsy.cat",t,[{"/moc":"#4388cc"}],t?{centerForce:1,depth:-1,enableDrag:!0,enableLegend:!1,enableZoom:!0,fontSize:.5,linkDistance:1,opacityScale:3,repelForce:1,scale:1.4}:{centerForce:1,depth:1,enableDrag:!0,enableLegend:!1,enableZoom:!0,fontSize:.6,linkDistance:1,opacityScale:3,repelForce:2,scale:1.2})}var i=document.getElementsByClassName("mermaid");i.length>0&&import("https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs").then(e=>{e.default.init()});function a(n){const e=n.target,t=e.className.split(" "),s=t.includes("broken"),o=t.includes("internal-link");plausible("Link Click",{props:{href:e.href,broken:s,internal:o,graph:!1}})}const r=document.querySelectorAll("a");for(link of r)link.className.includes("root-title")&&link.addEventListener("click",a,{once:!0})},init=(e=document)=>{addCopyButtons(),addTitleToCodeBlocks(),renderMathInElement(e.body,{delimiters:[{left:"$$",right:"$$",display:!0},{left:"$",right:"$",display:!1}],macros:{'’':"'"},throwOnError:!1})}</script><script type=module>
|
||
import { attachSPARouting } from "https:\/\/ar.falsy.cat\/js\/router.d6fe6bd821db9ea97f9aeefae814d8e7.min.js"
|
||
attachSPARouting(init, render)
|
||
</script><script defer data-domain=ar.falsy.cat src=https://plausible.io/js/script.js></script>
|
||
<script>window.plausible=window.plausible||function(){(window.plausible.q=window.plausible.q||[]).push(arguments)}</script></head><body><div id=search-container><div id=search-space><input autocomplete=off id=search-bar name=search type=text aria-label=Search placeholder="Search for something..."><div id=results-container></div></div></div><script src=https://cdn.jsdelivr.net/npm/flexsearch@0.7.21/dist/flexsearch.bundle.js integrity="sha256-i3A0NZGkhsKjVMzFxv3ksk0DZh3aXqu0l49Bbh0MdjE=" crossorigin=anonymous defer></script>
|
||
<script defer src=https://ar.falsy.cat/js/full-text-search.e6e2e0c213187ca0c703d6e2c7a77fcd.min.js></script><div class=singlePage><header><h1 id=page-title><a class=root-title href=https://ar.falsy.cat/>ar.falsy.cat</a></h1><div class=spacer></div><div id=search-icon><p>Search</p><svg tabindex="0" aria-labelledby="title desc" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19.9 19.7"><title id="title">Search Icon</title><desc id="desc">Icon to open search</desc><g class="search-path" fill="none"><path stroke-linecap="square" d="M18.5 18.3l-5.4-5.4"/><circle cx="8" cy="8" r="7"/></g></svg></div><div class=darkmode><input class=toggle id=darkmode-toggle type=checkbox tabindex=-1>
|
||
<label id=toggle-label-light for=darkmode-toggle tabindex=-1><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="dayIcon" viewBox="0 0 35 35" style="enable-background:new 0 0 35 35"><title>Light Mode</title><path d="M6 17.5C6 16.672 5.328 16 4.5 16h-3C.672 16 0 16.672.0 17.5S.672 19 1.5 19h3C5.328 19 6 18.328 6 17.5zM7.5 26c-.414.0-.789.168-1.061.439l-2 2C4.168 28.711 4 29.086 4 29.5 4 30.328 4.671 31 5.5 31c.414.0.789-.168 1.06-.44l2-2C8.832 28.289 9 27.914 9 27.5 9 26.672 8.329 26 7.5 26zm10-20C18.329 6 19 5.328 19 4.5v-3C19 .672 18.329.0 17.5.0S16 .672 16 1.5v3C16 5.328 16.671 6 17.5 6zm10 3c.414.0.789-.168 1.06-.439l2-2C30.832 6.289 31 5.914 31 5.5 31 4.672 30.329 4 29.5 4c-.414.0-.789.168-1.061.44l-2 2C26.168 6.711 26 7.086 26 7.5 26 8.328 26.671 9 27.5 9zM6.439 8.561C6.711 8.832 7.086 9 7.5 9 8.328 9 9 8.328 9 7.5c0-.414-.168-.789-.439-1.061l-2-2C6.289 4.168 5.914 4 5.5 4 4.672 4 4 4.672 4 5.5c0 .414.168.789.439 1.06l2 2.001zM33.5 16h-3c-.828.0-1.5.672-1.5 1.5s.672 1.5 1.5 1.5h3c.828.0 1.5-.672 1.5-1.5S34.328 16 33.5 16zM28.561 26.439C28.289 26.168 27.914 26 27.5 26c-.828.0-1.5.672-1.5 1.5.0.414.168.789.439 1.06l2 2C28.711 30.832 29.086 31 29.5 31c.828.0 1.5-.672 1.5-1.5.0-.414-.168-.789-.439-1.061l-2-2zM17.5 29c-.829.0-1.5.672-1.5 1.5v3c0 .828.671 1.5 1.5 1.5s1.5-.672 1.5-1.5v-3C19 29.672 18.329 29 17.5 29zm0-22C11.71 7 7 11.71 7 17.5S11.71 28 17.5 28 28 23.29 28 17.5 23.29 7 17.5 7zm0 18c-4.136.0-7.5-3.364-7.5-7.5s3.364-7.5 7.5-7.5 7.5 3.364 7.5 7.5S21.636 25 17.5 25z"/></svg></label><label id=toggle-label-dark for=darkmode-toggle tabindex=-1><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="nightIcon" viewBox="0 0 100 100" style="enable-background='new 0 0 100 100'"><title>Dark Mode</title><path d="M96.76 66.458c-.853-.852-2.15-1.064-3.23-.534-6.063 2.991-12.858 4.571-19.655 4.571C62.022 70.495 50.88 65.88 42.5 57.5 29.043 44.043 25.658 23.536 34.076 6.47c.532-1.08.318-2.379-.534-3.23-.851-.852-2.15-1.064-3.23-.534-4.918 2.427-9.375 5.619-13.246 9.491-9.447 9.447-14.65 22.008-14.65 35.369.0 13.36 5.203 25.921 14.65 35.368s22.008 14.65 35.368 14.65c13.361.0 25.921-5.203 35.369-14.65 3.872-3.871 7.064-8.328 9.491-13.246C97.826 68.608 97.611 67.309 96.76 66.458z"/></svg></label></div></header><article><h1>dart言語</h1><p class=meta>Last updated
|
||
Jun 21, 2023</p><ul class=tags><li><a href=https://ar.falsy.cat/tags/note/>Note</a></li><li><a href=https://ar.falsy.cat/tags/info-tech/>Info tech</a></li><li><a href=https://ar.falsy.cat/tags/development/>Development</a></li><li><a href=https://ar.falsy.cat/tags/programming-language/>Programming language</a></li></ul><aside class=mainTOC><details><summary>Table of Contents</summary><nav id=TableOfContents><ol><li><a href=#概要>概要</a></li><li><a href=#特徴>特徴</a></li><li><a href=#文法>文法</a><ol><li><a href=#変数修飾子>変数修飾子</a></li><li><a href=#null-safety>Null safety</a></li><li><a href=#コンストラクタ>コンストラクタ</a></li></ol></li></ol></nav></details></aside><a href=#概要><h2 id=概要><span class=hanchor arialabel=Anchor># </span>概要</h2></a><ul><li>Google製プログラミング言語</li><li><a href=/note/info-tech/flutter/ rel=noopener class=internal-link data-src=/note/info-tech/flutter/>flutter</a>のための言語</li><li>日本語資料少なめ</li><li>オブジェクト指向</li></ul><a href=#特徴><h2 id=特徴><span class=hanchor arialabel=Anchor># </span>特徴</h2></a><ul><li>undefined behaviorは無い</li><li>Null safety<ul><li>型名に?を付ければNull許容型になる</li><li>Null許容型に対してはNullチェックをしないとコンパイラがキレる</li></ul></li><li>整数値以外は参照型</li><li>GC(mark & sweep)搭載<ul><li>デストラクタは無さそう,そもそもmark & sweepでデストラクタは信頼できない</li></ul></li><li>コンストラクタが書きやすい<ul><li>わざわざメンバ変数と同じ名前の引数を書いて,代入して,,,ということをしなくてもいい</li></ul></li><li>静的解析が強め</li></ul><a href=#文法><h2 id=文法><span class=hanchor arialabel=Anchor># </span>文法</h2></a><ul><li>大体は既存のやつと同じ</li><li>文末セミコロン必須</li><li>関数呼び出しの実引数リストでもケツカンマ許容</li></ul><a href=#変数修飾子><h3 id=変数修飾子><span class=hanchor arialabel=Anchor># </span>変数修飾子</h3></a><ul><li>型が自明な場合,型名は省略できる<ul><li>省略できる場合は省略することが推奨される</li></ul></li></ul><div class=highlight><div class=chroma><table class=lntable><tr><td class=lntd><pre tabindex=0 class=chroma><code><span class=lnt> 1
|
||
</span><span class=lnt> 2
|
||
</span><span class=lnt> 3
|
||
</span><span class=lnt> 4
|
||
</span><span class=lnt> 5
|
||
</span><span class=lnt> 6
|
||
</span><span class=lnt> 7
|
||
</span><span class=lnt> 8
|
||
</span><span class=lnt> 9
|
||
</span><span class=lnt>10
|
||
</span><span class=lnt>11
|
||
</span><span class=lnt>12
|
||
</span><span class=lnt>13
|
||
</span><span class=lnt>14
|
||
</span><span class=lnt>15
|
||
</span></code></pre></td><td class=lntd><pre tabindex=0 class=chroma><code class=language-dart data-lang=dart><span class=line><span class=cl><span class=c1>// コンパイル時定数
|
||
</span></span></span><span class=line><span class=cl><span class=c1></span><span class=kd>const</span> <span class=kt>int</span> <span class=n>x</span> <span class=o>=</span> <span class=m>0</span><span class=p>;</span>
|
||
</span></span><span class=line><span class=cl><span class=kd>const</span> <span class=n>x</span> <span class=o>=</span> <span class=m>0</span><span class=p>;</span>
|
||
</span></span><span class=line><span class=cl>
|
||
</span></span><span class=line><span class=cl><span class=c1>// 再代入不可能変数
|
||
</span></span></span><span class=line><span class=cl><span class=c1></span><span class=kd>final</span> <span class=kt>int</span> <span class=n>x</span> <span class=o>=</span> <span class=m>0</span><span class=p>;</span>
|
||
</span></span><span class=line><span class=cl><span class=kd>final</span> <span class=n>x</span> <span class=o>=</span> <span class=m>0</span><span class=p>;</span>
|
||
</span></span><span class=line><span class=cl>
|
||
</span></span><span class=line><span class=cl><span class=c1>// 再代入可能変数
|
||
</span></span></span><span class=line><span class=cl><span class=c1></span><span class=kd>var</span> <span class=kt>int</span> <span class=n>x</span> <span class=o>=</span> <span class=m>0</span><span class=p>;</span>
|
||
</span></span><span class=line><span class=cl><span class=kd>var</span> <span class=n>x</span> <span class=o>=</span> <span class=m>0</span><span class=p>;</span>
|
||
</span></span><span class=line><span class=cl>
|
||
</span></span><span class=line><span class=cl><span class=c1>// 遅延初期化変数
|
||
</span></span></span><span class=line><span class=cl><span class=c1></span><span class=n>late</span> <span class=kt>int</span> <span class=n>x</span><span class=p>;</span>
|
||
</span></span><span class=line><span class=cl><span class=n>late</span> <span class=kd>final</span> <span class=kt>int</span> <span class=n>x</span><span class=p>;</span>
|
||
</span></span></code></pre></td></tr></table></div></div><a href=#final-再代入不可能変数><h4 id=final-再代入不可能変数><span class=hanchor arialabel=Anchor># </span>final: 再代入不可能変数</h4></a><ul><li>値型の変数に対しては,値の変更を禁止する</li><li>参照型の変数に対しては,参照先の変更のみを禁止する</li><li>dartでは,参照先のオブジェクトの変更を禁止することはできない</li></ul><a href=#late-遅延初期化><h4 id=late-遅延初期化><span class=hanchor arialabel=Anchor># </span>late: 遅延初期化</h4></a><ul><li>変数の初期化を遅延させることができる</li><li>実質的にはNull safetyの無いNull許容型</li><li><code>late final</code>修飾子によって複数回の代入をコンパイルエラーにできる<ul><li>ただし静的解析の精度は微妙なので,絶対に2回目の代入ができなくなるわけではない</li></ul></li></ul><a href=#null-safety><h3 id=null-safety><span class=hanchor arialabel=Anchor># </span>Null safety</h3></a><ul><li>Null許容型に対しては,Nullを扱いやすくするための演算子が使える</li><li>関数の中で,変数に対して一度nullチェックをした場合,以降,その変数はNull許容型でないものとして扱える</li></ul><div class=highlight><div class=chroma><table class=lntable><tr><td class=lntd><pre tabindex=0 class=chroma><code><span class=lnt> 1
|
||
</span><span class=lnt> 2
|
||
</span><span class=lnt> 3
|
||
</span><span class=lnt> 4
|
||
</span><span class=lnt> 5
|
||
</span><span class=lnt> 6
|
||
</span><span class=lnt> 7
|
||
</span><span class=lnt> 8
|
||
</span><span class=lnt> 9
|
||
</span><span class=lnt>10
|
||
</span><span class=lnt>11
|
||
</span><span class=lnt>12
|
||
</span><span class=lnt>13
|
||
</span><span class=lnt>14
|
||
</span></code></pre></td><td class=lntd><pre tabindex=0 class=chroma><code class=language-dart data-lang=dart><span class=line><span class=cl><span class=p>(</span><span class=n>T</span><span class=o>?</span> <span class=n>x</span><span class=p>)</span> <span class=p>{</span>
|
||
</span></span><span class=line><span class=cl> <span class=n>x</span> <span class=o>??</span> <span class=n>T</span><span class=p>();</span> <span class=c1>// x が null ならば 0 それ以外ならば T()
|
||
</span></span></span><span class=line><span class=cl><span class=c1></span> <span class=n>x</span><span class=o>?</span><span class=p>.</span><span class=n>method</span><span class=p>();</span> <span class=c1>// x が null ならば methodを呼ばずnullを返す それ以外ならば methodを呼ぶ
|
||
</span></span></span><span class=line><span class=cl><span class=c1></span> <span class=n>x</span><span class=o>!</span><span class=p>.</span><span class=n>method</span><span class=p>();</span> <span class=c1>// x が nullでない ことを前提として methodを呼ぶ(実行時にnullだった場合runtime error)
|
||
</span></span></span><span class=line><span class=cl><span class=c1></span><span class=p>};</span>
|
||
</span></span><span class=line><span class=cl><span class=p>(</span><span class=n>T</span><span class=o>?</span> <span class=n>x</span><span class=p>)</span> <span class=p>{</span>
|
||
</span></span><span class=line><span class=cl> <span class=k>if</span> <span class=p>(</span><span class=n>x</span> <span class=o>==</span> <span class=kc>null</span><span class=p>)</span> <span class=p>{</span>
|
||
</span></span><span class=line><span class=cl> <span class=k>return</span><span class=p>;</span>
|
||
</span></span><span class=line><span class=cl> <span class=p>}</span>
|
||
</span></span><span class=line><span class=cl> <span class=n>x</span><span class=p>.</span><span class=n>method</span><span class=p>();</span> <span class=c1>// x!.method(); とする必要がない
|
||
</span></span></span><span class=line><span class=cl><span class=c1></span><span class=p>};</span>
|
||
</span></span><span class=line><span class=cl><span class=p>(</span><span class=n>T</span><span class=o>?</span> <span class=n>x</span><span class=p>)</span> <span class=p>{</span>
|
||
</span></span><span class=line><span class=cl> <span class=n>x</span><span class=p>.</span><span class=n>method</span><span class=p>();</span> <span class=c1>// Nullチェックしてないのでコンパイルエラー
|
||
</span></span></span><span class=line><span class=cl><span class=c1></span><span class=p>};</span>
|
||
</span></span></code></pre></td></tr></table></div></div><a href=#コンストラクタ><h3 id=コンストラクタ><span class=hanchor arialabel=Anchor># </span>コンストラクタ</h3></a><ul><li>C++と比べてかなり書きやすい</li></ul><div class=highlight><div class=chroma><table class=lntable><tr><td class=lntd><pre tabindex=0 class=chroma><code><span class=lnt> 1
|
||
</span><span class=lnt> 2
|
||
</span><span class=lnt> 3
|
||
</span><span class=lnt> 4
|
||
</span><span class=lnt> 5
|
||
</span><span class=lnt> 6
|
||
</span><span class=lnt> 7
|
||
</span><span class=lnt> 8
|
||
</span><span class=lnt> 9
|
||
</span><span class=lnt>10
|
||
</span><span class=lnt>11
|
||
</span><span class=lnt>12
|
||
</span><span class=lnt>13
|
||
</span><span class=lnt>14
|
||
</span><span class=lnt>15
|
||
</span><span class=lnt>16
|
||
</span></code></pre></td><td class=lntd><pre tabindex=0 class=chroma><code class=language-dart data-lang=dart><span class=line><span class=cl><span class=kd>class</span> <span class=nc>A</span> <span class=p>{</span>
|
||
</span></span><span class=line><span class=cl> <span class=kd>final</span> <span class=kt>int</span> <span class=n>x</span><span class=p>;</span>
|
||
</span></span><span class=line><span class=cl> <span class=kd>final</span> <span class=kt>int</span> <span class=n>y</span><span class=p>;</span>
|
||
</span></span><span class=line><span class=cl> <span class=kd>final</span> <span class=kt>int</span> <span class=n>z</span><span class=p>;</span>
|
||
</span></span><span class=line><span class=cl>
|
||
</span></span><span class=line><span class=cl> <span class=n>A</span><span class=p>(</span><span class=k>this</span><span class=p>.</span><span class=n>x</span><span class=p>,</span> <span class=k>this</span><span class=p>.</span><span class=n>y</span><span class=p>,</span> <span class=k>this</span><span class=p>.</span><span class=n>z</span><span class=p>);</span>
|
||
</span></span><span class=line><span class=cl> <span class=n>A</span><span class=p>(</span><span class=k>this</span><span class=p>.</span><span class=n>x</span><span class=p>,</span> <span class=p>{</span><span class=n>required</span> <span class=k>this</span><span class=p>.</span><span class=n>y</span><span class=p>,</span> <span class=k>this</span><span class=p>.</span><span class=n>z</span> <span class=o>=</span> <span class=m>1</span><span class=p>});</span>
|
||
</span></span><span class=line><span class=cl> <span class=n>A</span><span class=p>.</span><span class=n>empty</span><span class=p>()</span> <span class=o>:</span>
|
||
</span></span><span class=line><span class=cl> <span class=k>this</span><span class=p>.</span><span class=n>x</span> <span class=o>=</span> <span class=m>0</span><span class=p>,</span> <span class=k>this</span><span class=p>.</span><span class=n>y</span> <span class=o>=</span> <span class=m>0</span><span class=p>,</span> <span class=k>this</span><span class=p>.</span><span class=n>z</span> <span class=o>=</span> <span class=m>0</span><span class=p>;</span>
|
||
</span></span><span class=line><span class=cl><span class=p>}</span>
|
||
</span></span><span class=line><span class=cl>
|
||
</span></span><span class=line><span class=cl><span class=kt>void</span> <span class=n>main</span><span class=p>()</span> <span class=p>{</span>
|
||
</span></span><span class=line><span class=cl> <span class=kd>final</span> <span class=n>a1</span> <span class=o>=</span> <span class=n>A</span><span class=p>(</span><span class=m>0</span><span class=p>,</span> <span class=m>1</span><span class=p>,</span> <span class=m>2</span><span class=p>);</span>
|
||
</span></span><span class=line><span class=cl> <span class=kd>final</span> <span class=n>a2</span> <span class=o>=</span> <span class=n>A</span><span class=p>(</span><span class=m>0</span><span class=p>,</span> <span class=nl>y:</span> <span class=m>1</span><span class=p>);</span>
|
||
</span></span><span class=line><span class=cl> <span class=kd>final</span> <span class=n>a3</span> <span class=o>=</span> <span class=n>A</span><span class=p>.</span><span class=n>empty</span><span class=p>();</span>
|
||
</span></span><span class=line><span class=cl><span class=p>}</span>
|
||
</span></span></code></pre></td></tr></table></div></div><div class=content-list><h2>Related Notes</h2><ul class=section-ul><li class=section-li><div class=section><p class=meta>Aug 14, 2023</p><div class=desc><h3><a href=https://ar.falsy.cat/note/info-tech/c-cpp-sanitizer/ class=internal-link data-src=/note/info-tech/c-cpp-sanitizer/>C/C++のsanitizerの使い方</a></h3></div><div class=spacer></div><ul class=tags><li><a href=https://ar.falsy.cat/tags/note/>Note</a></li><li><a href=https://ar.falsy.cat/tags/info-tech/>Info-Tech</a></li><li><a href=https://ar.falsy.cat/tags/development/>Development</a></li><li><a href=https://ar.falsy.cat/tags/programming-language/>Programming-Language</a></li><li><a href=https://ar.falsy.cat/tags/howto/>Howto</a></li></ul></div></li><li class=section-li><div class=section><p class=meta>Jun 29, 2023</p><div class=desc><h3><a href=https://ar.falsy.cat/note/info-tech/install-flutter-on-archlinux/ class=internal-link data-src=/note/info-tech/install-flutter-on-archlinux/>ArchLinuxへflutterをインストール</a></h3></div><div class=spacer></div><ul class=tags><li><a href=https://ar.falsy.cat/tags/note/>Note</a></li><li><a href=https://ar.falsy.cat/tags/info-tech/>Info-Tech</a></li><li><a href=https://ar.falsy.cat/tags/development/>Development</a></li><li><a href=https://ar.falsy.cat/tags/howto/>Howto</a></li></ul></div></li><li class=section-li><div class=section><p class=meta>Jun 29, 2023</p><div class=desc><h3><a href=https://ar.falsy.cat/note/info-tech/flutter/ class=internal-link data-src=/note/info-tech/flutter/>flutter</a></h3></div><div class=spacer></div><ul class=tags><li><a href=https://ar.falsy.cat/tags/note/>Note</a></li><li><a href=https://ar.falsy.cat/tags/info-tech/>Info-Tech</a></li><li><a href=https://ar.falsy.cat/tags/development/>Development</a></li><li><a href=https://ar.falsy.cat/tags/library/>Library</a></li></ul></div></li></ul></div></article><hr><div class=page-end id=footer><div class=backlinks-container><h3>Backlinks</h3><ul class=backlinks><li><a href=/note/info-tech/flutter/ data-ctx=Dart data-src=/note/info-tech/flutter class=internal-link>flutter</a></li></ul></div><div><script src=https://cdn.jsdelivr.net/npm/d3@6.7.0/dist/d3.min.js integrity="sha256-+7jaYCp29O1JusNWHaYtgUn6EhuP0VaFuswhNV06MyI=" crossorigin=anonymous></script><h3>Interactive Graph</h3><div id=graph-container></div><style>:root{--g-node:var(--secondary);--g-node-active:var(--primary);--g-node-inactive:var(--visited);--g-link:var(--outlinegray);--g-link-active:#5a7282}</style><script src=https://ar.falsy.cat/js/graph.6579af7b10c818dbd2ca038702db0224.js></script></div></div><div id=contact_buttons><footer><p>Made by falsycat using <a href=https://github.com/jackyzha0/quartz>Quartz</a>, © 2023</p><ul><li><a href=https://ar.falsy.cat/>Home</a></li><li><a href=https://falsy.cat/>Portfolio</a></li><li><a href=https://falsy.cat/admin>Fediverse</a></li><li><a href=https://github.com/falsycat>GitHub</a></li><li><a href=https://youtube.com/@falsycat>YouTube</a></li></ul></footer></div></div></body></html> |