mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-29 17:34:43 +00:00
24 lines
470 B
Nim
24 lines
470 B
Nim
type
|
|
TMaybe[T] = object
|
|
case empty: bool
|
|
of false: value: T
|
|
else: nil
|
|
|
|
proc Just*[T](val: T): TMaybe[T] =
|
|
result.empty = false
|
|
result.value = val
|
|
|
|
proc Nothing[T](): TMaybe[T] =
|
|
result.empty = true
|
|
|
|
proc safeReadLine(): TMaybe[string] =
|
|
var r = stdin.readLine()
|
|
if r == "": return Nothing[string]()
|
|
else: return Just(r)
|
|
|
|
when isMainModule:
|
|
var Test = Just("Test")
|
|
echo(Test.value)
|
|
var mSomething = safeReadLine()
|
|
echo(mSomething.value)
|