Luau がオペレーションで値または 変数 を使おうとしても、算術、連結、または割り当てなど、操作が期待しているタイプではない値を使用しようとしても、Luau は ( 強制する )値を変更するように変換します。その操作の実行時に強制が発生し、変数の値を変更しません。
算術
Luau は、算術操作 で、文字列を数字に強制します。この動作は Luau に組み込まれています。タイプが算術に非互換である場合、Luau はエラーをスローし、スクリプトの残りを実行しません。たとえば、文字列が数字を表していない場合は、数字に文字列を追加できません。
print(100 + "7") -- 107print(100 - "7") -- 93print("1000" + 234) -- 1234print("1000" - 234) -- 766print("hello" + 234) -- error: attempt to perform arithmetic (add) string and number
結合
結合では、Luau は数字を文字列に強制します。強制を使用せずに数字を文字列に変換するには、string.format() 関数を使用します。
print("Pi is " .. math.pi) --> Pi は 3.1415926535898print("Pi is " .. 3.1415927) --> Pi は 3.1415927-- 3桁まで丸めるprint("Pi is " .. string.format("%.3f", 3.1415927)) -- Pi is 3.142
割り当て
いくつかのプロパティは、Enum または文字列などの特定のデータタイプを期待していますが、異なるタイプの値を割り当てて、Luauは値をプロパティが期待するタイプに変換します。
枚数
Luau は、枚挙値の数と文字列を全体の枚挙名に強制します。たとえば、number、string、または全体の enum 名を使用して、Part.Material プロパティの値を名前にすることができ、print() 関数は常に全体の enum 名を印刷します。明示的で全体の枚列名を使用するのがベストプラクティスです。Enums に関する詳細情報は、Enums を参照してください。
local Workspace = game:GetService("Workspace")local part1 = Instance.new("Part")part1.Material = 816part1.Parent = Workspaceprint(part1.Material) -- Enum.Material.Concretelocal part2 = Instance.new("Part")part2.Material = "Concrete"part2.Parent = Workspaceprint(part2.Material) -- Enum.Material.Concrete-- これは最良の実践です、なぜならそれが最も明確であるからですlocal part3 = Instance.new("Part")part3.Material = Enum.Material.Concretepart3.Parent = Workspaceprint(part3.Material) -- Enum.Material.Concrete
時刻 Time of day
夜、昼、またはその他の時間であるかどうかを定義する Lighting.TimeOfDay プロパティは、DateTime データタイプのストリング表現です。Lighting.TimeOfDay に番号を割り当てると、Luau はそれを DateTime の文字列表現に変換します。
local Lighting = game:GetService("Lighting")Lighting.TimeOfDay = "05:00:00"print(Lighting.TimeOfDay) -- 05:00:00Lighting.TimeOfDay = 5print(Lighting.TimeOfDay) -- 05:00:00