無題

  • ano
  • 2025/05/10 (Sat) 00:32:56
>らでんさんは手持ち無沙汰で吸う人なのかな。

自制できるらしい いまは禁煙しています

>こんな子?

Adoさんの口からBABYMETALの話は聞いたことないね

>御本人は ショートヘアー のイメージがありました。

むかしはショートボブっぽいスタイルだったと思う
近頃はシルエットをみるにロングヘアーのようだけど
イラストのイメージに合せてエクステ、
あるいはウィッグをかぶってる可能性は否定できない

>コードが大きくなると起動時にモッサリしないのかな。

逐次コンパイルするので、全体のコード量は関係ありません
コンパイル時にオーバーヘッドはあるでしょうが微々たるものです
純粋なインタプリタで動作するCPythonはめちゃめちゃ遅い
PyPyというJITコンパイラもありますが互換性に問題があるらしい

>マスターするといろんな恩恵が得られるのでしょうね。

VSCodeの機能が優秀すぎるのです
Node.jsやパッケージマネージャをインストールしてしまえば
もはや統合開発環境と言っても過言ではないほど

ふつうのテキストエディタを使っていると
JSDocでわざわざコメントを書いても大した恩恵は得られません
人が読んで型を把握しやすくはなりますが面倒くさいだけです

T.Umezawaさんは静的型付けだろうが何だろうが秀丸使いで
静的型チェックも、補完機能もまったく使わずに打ち込んで
ビルドしてみてエラーがでたら訂正する、という猛者ですが
ふつうの人には趣味であってもVSCodeの使用を強く薦めます

>アノが「マゾヒスティックな快感を得るために」

やはりインテリセンスが機能するのは快感ではありますが
値を特定できない any ばかり並ぶと罪悪感を覚えます

VSCodeには、変数や関数にマウスオーバーすると、
それがどんな型なのか、どんな引数を取りうるのか、
どんな値を返すのか、明示してくれる機能があります
そこに any が並ぶのをどうにかしたくなるのです

多くのばあい変数や戻り値は型を明示しなくても推論されますが、
デフォルト値のない引数は明示しないとすべて any になります

----

http://ken4.s184.xrea.com/x/up/img/3807.png

canvas2D() は私がつくった関数です
第1引数の arg は、文字列あるいは null をとり、
w? と h? は省略可能な数値型で、幅と高さの指定です

argが文字列ならそのidで文書上のcanvas要素を取得、
nullのばあいはオフスクリーンのキャンバスを生成します

wとhを省略したばあいはcanvas要素のwidth, height属性、
それらが無指定ならデフォルト値の300×150になります
hのみを省略したばあいはwと同じになり正方形になります

戻り値はオブジェクトであり、
canvas要素とそのコンテクスト、幅と高さを返します
さらに vals は同様の値を配列で返します

ここではctxプロパティでコンテクストだけ得ていますが
分割代入で必要な値をまとめて宣言できるのがポイントです

const {cvs,ctx,w,h}= canvas2D('canvas', 400, 300);

// valsの配列から分割代入すると別名に変更できる
const [,OffCtx]= canvas2D(null, 400, 300).vals;

// まあ、このように書いても同じではありますが
const {ctx:OffCtx}= canvas2D(null, 400, 300);

----

canvas2D() という関数をつくったのは
通常のDOM APIでキャンバスの取得/設定を行うと
複数行にわたって面倒くさかったからです

const canvas = document.getElementById("canvas");
canvas.width = 400;
canvas.height = 300;
const ctx = canvas.getContext("2d");

>その「厳密チェック」についてはよくわかりません

静的型チェックというのは、ビルドや実行するまえに
ここの変数、引数、戻り値の型が一致してないよ、と指摘する機能です
型が合ってない値を代入しようとしたり、
型が合ってない値を関数に渡そうとすると、即座に赤ペンが入ります
存在しないプロパティ、メソッドを参照しようとしても指摘されます

nullという値は、その対象が“ない”ことを示す値です
undefined は、配列の領域外を参照したり、辞書のキーとひもづいた値が
定義されておらず“未定義”だったばあいなどに返される値です

変数や戻り値がnull許容型だったり、undefined になりうるときは
if文でnullチェックして早期リターンしたり、特定の型だけに絞ったり、
型を推論できる制御構造なり、null安全な式を組む必要があります

---

http://ken4.s184.xrea.com/x/up/img/3806.png

1枚目は、変数 `count` の宣言で0を代入しているので
これはnumber型であると推論されていますが、
文字列'foo'を再代入しているため、問題ありと指摘されます

2枚目のtoメソッドは文字列を受けとりますが、
それは決めれらたキーワードを列挙したStateType型であるため
それに含まれない `Titl` は型が一致していないと指摘されます

3枚目は、toメソッドの引数に値を書き込もうとしたときに
StateType型のすべての値が選択候補として提示されています

>ちなみに、この場合は「づらい」が正解のようですね。

これは単体で使えるから「づらい」のままにしたわけです

まあ、ふつうに考えれば「辛い」から来てると推論できますが
AIには「からい」のか「つらい」のか判断するのが難しい
「難い」が「がたい」なのか「にくい」なのかはどうちらでも
似たような意味だけど、びみょうにニュアンスが異なります

「むずかしい」は「むつかしい」が濁ったものだから、
「むづかしい」であるはずなのに「むずかしい」と書けと言う
(投稿前に、内容をプレビューして確認できます)