12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- public variant Result<T, E> {
- Ok(T),
- Error(E),
- Other(T, E);
-
- /*public then<R>(fn as function(result as T) as Result<R, E>) as Result<R, E> {
- return match this {
- Ok(result) => fn(result),
- Error(error) => Error(error),
- Other(result, error) => fn(result)
- };
- }*/
-
- //public handle<X>(handler as function(error as E) as Result<T, X>) as Result<T, X> {
- // return match this {
- // Ok(result) => Ok(result),
- // Error(error) => handler(error)
- // };
- //}
-
- public expect() as T {
- return match this {
- Ok(result) => result,
- Error(error) => panic "expect() called on an error value",
- Other(result, error) => result
- };
- }
-
- public orElse(other as T) as T {
- return match this {
- Ok(result) => result,
- Error(error) => other,
- Other(result, error) => result
- };
- }
-
- public orElse(other as function(error as E) as T) as T {
- return match this {
- Ok(result) => result,
- Error(error) => other(error),
- Other(result, error) => result
- };
- }
- }
-
-
-
- function makeResult() as Result<string, string>
- => Ok("10");
-
-
- function makeErrResult() as Result<string, string>
- => Error("10");
-
-
- println(makeResult().orElse("Ten"));
- println(makeResult().expect());
- println(makeErrResult().orElse("Ten"));
-
-
- //CompileException [TYPE_ARGUMENTS_NOT_INFERRABLE] Could not infer generic type parameters [ParsedExpressionFunction.compile, line 75]
- //println(makeResult().then(tValue => Result<string, string>.Ok(tValue)).expect());
-
- //IllegalArgumentException: Cannot retrieve members of undetermined type [TypeMembers.<init>, line 71]
- //println(makeResult().then(a => Ok(a)).expect());
- //println(makeResult().then(a as string => Ok(a)).expect());
-
- //CompileException [UNEXPECTED_TOKEN] ) expected [LLparserTokenStream.required, line 97]
- //Wants to compile a call to function() instead of creating a lambda
- //println(makeResult().then((function (t as string) as Result<string, string>)(t => Ok(t))).expect());
|