アクション→コード→javascriptlet

はい。ということで今回はjavascriptletです。

javascriptタスクと何が違うかってーと

直に記述できるのと、再生ボタンがあるから

エラーの検知がしやすいわけですね。

(「何列目がおかしい」と表示してくれる)


まぁ、taskerでも大抵の変数処理はできるので

よほど大量に変数出力するか

もしくは、シビアなタイミングで

タスク動かす必要がない限りは

わざわざjavaで組む必要はないかと思いますが

ジャバっと説明しちゃいましょう。javaだけに。


さて、ということで設定例。


こちらのコードはtaskerのグローバル変数

%Start_Xと%Yokosaを参照・設定し →①&②

%Yokosaの数値を絶対値に

変換したうえで           →③

java変数「Hairetsu」を

文字列「xkoma」と設定し →④


③で指定した「%Yokosaの絶対値」回数分だけ →⑤

%Start_Xの値に1を足して          →⑥(注意有)

その値を都度、ローカル配列「%xkoma」として

taskerに連続出力してくれるタスクですね。      →⑦


(※ローカル配列(変数)ですからね。

グローバル変数じゃないので

注意してくださいね)


たとえば%Start_Xが5、%Yokosaが‐3だと

%xkoma0が6

%xkoma1が7

%xkoma2が8


といったように出力されます。

―――――――以下コード――――

let x1 = global('Start_X');  //①

let x3 = global('Yokosa');  //②

let x4 = Math.abs(x3);   //③

let Hairetsu = "xkoma";   //④

for ( let x = 1; x <= x4; x++)  //⑤

{     

x5 = x + +x1; //⑥※

setLocal(`${Hairetsu}${x}`, x5); //⑦

}

――――――――――――――――


さて。それでは各種説明を。


「;」…式の区切り。

文章でいう「。」みたいなもの。



「'」…文字列を引用する時に使う?

とりあえずglobalでの

tasker変数引用にはいるっぽい。


「"」…文字列(string)定義で

変数を設定する時に使うっぽい。

「"」を使わないと数字(int)定義の

変数になる模様。

(逆に、「"」で括ると半角数字でも

数字として認識されない?)


let…定義設定。 x1をtasker変数の

%Start_Xとすると宣言している。

なおこの際、()の中の「'」×2と

)でくくったあとの「;」を書き忘れるので

注意して確認しましょう。


(なお、変数は「1x」のような

数字頭の記述は不可能で、

大文字を使うと

Setlocal でtaskerに出力できない模様)

(taskerのローカル変数設定は3文字以上の

小文字である必要があるので、まぁ残当)


ちなみにconstとの違いですが

constは絶対定義

letは代入可能定義と覚えましょう。

constのほうがバグりにくいですが

この場合は代入するのでletです。



さて、続くMath.abs(x3);

…はあんまり分からないんで

飛ばして次、for文。つまりループ条件式ですね。


内容は

1️⃣let xで0を設定し (let x = 0;)

2️⃣xが≦x4の値になるまで(x <= x4;)

3️⃣都度xに1を足しながら(x++)

{}内の式を繰り返す、という式です。


あ、細かい解説はこちらどうぞ。

https://java2005.cis.k.hosei.ac.jp/materials/lecture04/for.html


ちなみにこのletは

int等の数字変数として認識されるみたいなので

「 let x = 1;」のところを

「let x1 = global('Start_X');」としても

作動してくれません。

理由は以下で説明します。



で、続く※印なのですが

ここが問題です。


そもそも、javaの変数設定には

「int」などの数値変数と

「string」などの文字列変数があります。


で、ここでふたつ質問です。


①先ほどglobalで引用&設定したx1は

数値と文字列、どちらの判定でしょうか?


②また、文字列変数と数字変数を足すと

どのような出力が得られるのでしょうか?


それでは回答です。


①文字列判定になる


②「x」のほうが文字数に

塗り替えられて計算される。


です。つまりこのまま計算しても

文字列同士の結合にしかならず


x1(%Start_X)が5だと

5+1=6となるはずが

「51」と出力されるわけです。

だから、「+」演算子を

x1の頭につけて

文字列ではなく、数値として認識させ

検算する必要が、あったんですね。


あ、ちなみにここだけの話

文字列処理するなら

chatgptにjava書いてもらうのがオススメです。

僕の方でもいくつか「Tasker作例」の方で

上げておくので、参考にされるとよろしいかと。

  • Xで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る