Using

object Using
class Object
trait Matchable
class Any

Type members

Classlikes

trait ScopeExitHandler extends AutoCloseable

Value members

Concrete methods

def apply[R]: R =:= Using[R]

Returns a Using keyword to execute a ScopeExitHandler when exiting the nearest enclosing scope that is annotated as @reset, (or the nearest enclosing function if compilerplugins.ResetEverywhere is enabled).

Returns a Using keyword to execute a ScopeExitHandler when exiting the nearest enclosing scope that is annotated as @reset, (or the nearest enclosing function if compilerplugins.ResetEverywhere is enabled).

Note

This method is similar to apply, except the parameter type is changed from a generic R to the SAM type ScopeExitHandler, which allows for function literal expressions in Scala 2.12+ or Scala 2.11 with -Xexperimental compiler option.

Example

The following function will perform n *= 2 after n += 20:

         import scala.concurrent.Future
         import com.thoughtworks.dsl.keywords.Using.scopeExit
         import com.thoughtworks.dsl.keywords.Using.unary_!
         import com.thoughtworks.dsl.macros.Reset.Default.*
         var n = 1
         def multiplicationAfterAddition = *[Future] {
           !scopeExit { () =>
             n *= 2
           }
           n += 20
         }

Therefore, the final value of n should be (1 + 20) * 2 = 42.

         multiplicationAfterAddition.map { _ =>
           n should be(42)
         }

Givens

Givens

given Composed_FlatMap_OuterDomain_MappedValue: Composed[FlatMap[Using[R], Mapped], OuterDomain, MappedValue]

Extensions

Extensions

extension [R](r: R)
transparent inline
def unary_!(using inline notKeyword: NotGiven[R <:< Keyword]): R