is(n) \[incr Tcl] is(n)

```

```

# [NAME](#NAME)

itcl::is - test argument to see if it is a class or an object

# [SYNOPSIS](#SYNOPSIS)

**itcl::is option** ?*arg arg ...*?

```

```

# [DESCRIPTION](#DESCRIPTION)

The **is** command is used to check if the argument given is a class or an object; depending on the option given. If the argument if a class or object, then 1 is returned. Otherwise, 0 is returned. The **is** command also recognizes the commands wrapped in the itcl **code** command.

The *option* argument determines what action is carried out by the command. The legal *options* (which may be abbreviated) are:

[**is class command**](#is)

Returns 1 if command is a class, and returns 0 otherwise.

The fully qualified name of the class needs to be given as the *command* argument. So, if a class resides in a namespace, then the namespace needs to be specified as well. So, if a class **C** resides in a namespace **N**, then the command should be called like:

```
is N::C


    or
is ::N::C
```

[**is** object ?**-class className**? *command*](#is~2)

Returns 1 if *command* is an object, and returns 0 otherwise.

If the optional "**-class**" parameter is specified, then the *command* will be checked within the context of the class given. Note that *className* has to exist. If not, then an error will be given. So, if *className* is uncertain to be a class, then the programmer will need to check it's existance beforehand, or wrap it in a catch statement.

So, if **c** is an object in the class **C**, in namespace N then these are the possibilities (all return 1):

```
set obj [N::C c]
itcl::is object N::c
itcl::is object c
itcl::is object $obj
itcl::is object [itcl::code c]
```

# [KEYWORDS](#KEYWORDS)

class, object

3.3 itcl

---

Document: is(n) from tcl 9.1.0-r0 (Chainguard OS)
Source: https://downloads.sourceforge.net/project/tcl/Tcl/9.1.0/tcl9.1.0-src.tar.gz
