🌟
【Roblox】Unit for Luauをリリースしました
はじめに
こんにちは!hoshinoです!
本記事では、最近私がリリースしたRoblox向けライブラリ「Unit for Luau」についてご紹介します!
本題: 「Unit for Luau」についてのご紹介
どんなライブラリなのか?
LuauにUnit型を導入するためのライブラリです。
Unit型とは、語弊を恐れずにいうと「voidの代わりにプレースホルダーとして使える型」です。意味のない返り値が必要なケースで効果を発揮します。例えば、Railway Oriented Programmingなどが代表的なケースかと思います。
なお、Unit型についての解説記事としては、F#の公式ドキュメントがシンプルでわかりやすいです。
導入方法
Wallyを使っている場合、wally.tomlに以下を追記してください。
[dependencies]
Unit = "921starfish/unit@1.0.2"
Wallyの導入や使い方については以下の記事をご覧ください。
なお、Wallyの制約により、普通にインストールしただけではUnit型の型定義がエクスポートされません(!)
そのため、JohnnyMorganz氏によるOSS、Wally Package Types Fixerを併用することをお勧めします。
使い方
-- Moduleを読み込みます。
local Unit = require(path.to.Unit)
-- Unit型の唯一の値はUnit.unitです。
-- エイリアスとして、Unit.Unitも用意してあります。
local unit = Unit.unit
-- OOPスタイル向けに、Unit.new() / Unit.New()もあります。
unit = Unit.new()
-- 任意のUnit型の値は等価です。
print(Unit.unit == Unit.new()) -- true
-- tostringすると"()"になります。
print(tostring(unit)) -- "()"
-- Wally Package Types Fixerを使うと、Unit.Unit型が見えるようになります。
-- ※ Unit.Unit(値)とUnit.Unit(型)を混同しないようお気を付けください。
type Unit = Unit.Unit
-- 副作用のある関数の返り値の型注釈などにお使いください。
local function doSomething(): Unit.Unit
-- do something...
return Unit.unit
end
おわりに
本記事では、自作のRoblox向けライブラリ「Unit for Luau」についてご紹介しました。
本記事とライブラリが皆様のお役に立てれば幸いです。
次回予告
Unit for Luauの内部実装について、少し細かいお話をします。
お楽しみに!
Discussion