文字列で与えられた計算式の評価(計算)を行うAppleScriptです。
計算式の評価(Eval)を行うといえば、AppleScriptではrun scriptで計算式の文字列を実行するとか、
set aStr to "4 + 5 – 2^3"
set aRes to run script aStr
★Click Here to Open This Script
bcコマンドに計算を依頼するのが一般的です。
set aStr to "4 + 5 – 2^3"
set yC to string id 92
set aCMD to "echo \" scale=10; " & aStr & "\" | bc"
set aRes to do shell script aCMD
★Click Here to Open This Script
CocoaのNSExpressionによる式評価を試してみましたが、「**」でべき乗計算を行う形式はあまり見かけないように思います。
→ 調べてみたら、他のプログラミング言語ではこっちが一般的だったので訂正(^ー^; Basic系はべき乗記号(^)でしょうか。
run scriptコマンドでAppleScriptのコマンドを実行して結果を取得できますが、ユーザーから入力させられたり他のファイルからコマンド文字列を取ってくるような仕様になっている場合には、危険なコマンドを仕込まれる危険性があるので、AppleScriptのコマンドが文字列中に入っていないかを事前にチェックするとよいと思われます。
→ 指定のAppleScriptテキストを構文確認して指定の構文要素が入っていないかチェック
AppleScript名:式評価(eval)を行う |
— – Created by: Takaaki Naganoya – Created on: 2019/08/07 — – Copyright © 2019 Piyomaru Software, All Rights Reserved — use AppleScript version "2.5" use scripting additions use framework "Foundation" property NSExpression : a reference to current application’s NSExpression set aStr to "4 + 5 – 2**3" set d1Res to calcEval(aStr) of me –> 1.0 –式評価(Evaluate) on calcEval(aStr) –https://nshipster.com/nsexpression/ set anExp to NSExpression’s expressionWithFormat:aStr set valList to anExp’s expressionValueWithObject:(missing value) context:(missing value) return valList as real end calcEval |