> For the complete documentation index, see [llms.txt](https://katxupa.gitbook.io/katxupa/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://katxupa.gitbook.io/katxupa/get-a-taste-of-katxupa/usage/scope-functions/functions/withit.md).

# withIt

***withIt(input, function(){** // do something here with this **})***

* **The context object** is available as a receiver (*this*).
* **The return value** is the lambda result.

As *withIt* is not an extension function: the context object is passed as an argument, but inside the lambda, it's available as a receiver (*this*).

We recommend using *withIt* for calling functions on the context object when you don't need to use the returned result. In code, with can be read as "**with this object, do the following**."

```ts
const numbers = mutableListOf("one", "two", "three");

withIt(numbers, function () {
    console.log(`'withIt' is called with argument ${this}`);
    console.log(`It contains ${this.length} elements`);
});
```

You can also use withIt to introduce a helper object whose properties or functions are used for calculating a value.

```ts
const numbers = mutableListOf<string>("one", "two", "three");

const firstAndLast = withIt(numbers, function () {
    return `The first element is ${this.first()}, the last element is ${this.last()}`
});
console.debug(firstAndLast);
```
