OPX//77
opx_lib

Lib.Result

Last updated on

Build, test and read the Result table every wrapper answers.

Pure. No permission.

Lib.Result.Ok

An answer. value may be nil: that is what ok is for.

Lib.Result.Ok(value)

Parameters

  • value?: any

Returns

  • { ok = true, value }

Lib.Result.Err

A refusal. code is stable and branchable; detail is for the journal.

Lib.Result.Err(code, detail)

Parameters

  • code: string
  • detail?: any

Returns

  • { ok = false, error, detail }
Example
if not name then return Lib.Result.Err('invalid_name', 'no name given') end

Lib.Result.Is

Whether a value is a Result: a table with a boolean ok.

Lib.Result.Is(value)

Parameters

  • value: any

Returns

  • boolean

Lib.Result.Or

The value of a success, else fallback.

Lib.Result.Or(result, fallback)

Parameters

  • result: Result
  • fallback?: any

Returns

  • any
Example
local here = Lib.Result.Or(Lib.Character.Position(), { x = 0, y = 0, z = 0 })

Lib.Result.Map

Applies fn to a successful value; a failure passes straight through.

Lib.Result.Map(result, fn)

Parameters

  • result: Result
  • fn: function

Returns

  • Result — errors not-a-result, not-a-function, map-raised
Example
local count = Lib.Result.Map(Lib.Blip.List(), function(list) return #list end)

On this page