![見出し画像](https://assets.st-note.com/production/uploads/images/103374727/rectangle_large_type_2_82f5af83fff018e2d414b6e7e806ce20.png?width=1200)
【AiScript】基礎 2【開発記】
今回の概略
pick で範囲外を取り出そうとすると null 🤔
一部文法には空白を必要とする物が有る😞
----備忘録
random は seed 初期化しないとどういう乱数が出る?
結果投稿後にタイムラインへ移動は可能なのか?
結果投稿完了を検知する必要が有る?
タイムライン移動はそもそも来たページから戻るべき?(来歴取得)
前回の粗筋
基礎を学ぶにも資料は全然無い…😞
探査系
文字列や配列の範囲外ってどうなるの?🤔
JS 基準なら破綻して処理がそこで止まってスクリプト事態は打ち切られるのだけど AS は果たして…?😑
予想では null が来るか JS 同様打ち切りになるか
aiscript/docs/std.md
https://github.com/syuilo/aiscript/blob/master/docs/std.md
@(v: str).pick(i: num): str | null
@(v: str).incl(keyword: str): bool
@(v: str).slice(begin: num, end: num): str
文字列の指定した部分を取得します。
仕様が確かなら やっぱり null が返ってくるっぽい😑
![](https://assets.st-note.com/img/1681833296978-LhgwjvnjS3.jpg)
という事で Play 作成の初期値の hello,your name を使って調べるお🤔
ボタン押すとアラートで値が出てくれる、挙動を調べるには最適なテンプレ🤤
![](https://assets.st-note.com/img/1681833340831-tDGV0cytAN.jpg)
この処理だと `tstx.pick(4)` では5文字目を取得しようとするので tsvl に null が入って17行目の出力では値が出ないか "(null)" みたいな JS 的補完がなされるかどっちかの筈😑
若しくは落ちる🙄
では👇
![](https://assets.st-note.com/img/1681833356621-io2Ke7bgGO.jpg)
お?落ちなかった🤤
でも落ちないのか打ち切られてるのかはちょっとこれだと判らない😑
まぁとりあえずこの tsvl が "" なのか null なのかは確認すべきよね🤔
仕様の通りなら null の筈だけど…😑
![](https://assets.st-note.com/img/1681833372470-Fc3U7rvqE6.jpg)
この式が想定通りに動けば "(null)" が出る筈🤤
![](https://assets.st-note.com/img/1681833398506-FSEifekPIl.jpg)
🤪🤪🤪
![](https://assets.st-note.com/img/1681833467598-hI1nCVFhA5.jpg)
![](https://assets.st-note.com/img/1681833467627-g1kLbEZXmI.jpg)
うーん、三項演算子が無いから if のブロック内が返値になると見たのだけど違うっぽ?🙄
AiScriptを使ってみた
条件分岐
https://qiita.com/YuzuRyo61/items/58d8c2f6a2c2bbfb7eda#条件分岐
条件分岐は式として扱えるため、ブロック内で値を返すこともできます。
<: if (a == b) {
"a is equal to b"
} elif (a > b) {
"a is grater than b"
} else {
"a is less than b"
}
………🤔
for の括弧無しがダメだったみたいに廃止された書式…?😑
AiScriptを使ってみた
AiScriptは空白に厳しい
https://qiita.com/YuzuRyo61/items/58d8c2f6a2c2bbfb7eda#aiscriptは空白に厳しい
謎の構文エラーはこれの可能性。
あ、これかな?🤔
![](https://assets.st-note.com/img/1681833499372-k1NNiSlefP.jpg)
![](https://assets.st-note.com/img/1681833510285-HlK9LwBSnI.jpg)
と言う事は最初にテンプレートリテラルに埋め込んだ時のは if の空白問題?🤔
![](https://assets.st-note.com/img/1681833528852-KWOoupBpuW.jpg)
![](https://assets.st-note.com/img/1681833528882-yuiTooMxWZ.jpg)
こんなのただの不可避的許容外障害解決法じゃん😞
次回は
ネタが浮かんだので作るぽ🤤