


# Some&lt;T> class









<p>A value wrapped in <a href="../package-fidl_fidl/Some-class.md">Some</a> can be assigned to an <a href="../package-fidl_fidl/OptionalNullable-class.md">OptionalNullable</a> to
convey the value should be used instead of a default.</p>



**Inheritance**

- Object
- [OptionalNullable](../package-fidl_fidl/OptionalNullable-class.md)&lt;T>
- Some








## Constructors

[Some](../package-fidl_fidl/Some/Some.md) (T value)

  _const_ 


## Properties

##### [hashCode](../package-fidl_fidl/OptionalNullable/hashCode.md) &#8594; int



The hash code for this object.  
_<span class="feature read-only">read-only</span><span class="feature inherited">inherited</span>_



##### [isDefined](../package-fidl_fidl/OptionalNullable/isDefined.md) &#8594; bool



True if the value is <a href="../package-fidl_fidl/Some-class.md">Some</a> or <a href="../package-fidl_fidl/None-class.md">None</a>.  
_<span class="feature read-only">read-only</span><span class="feature inherited">inherited</span>_



##### [isUndefined](../package-fidl_fidl/OptionalNullable/isUndefined.md) &#8594; bool



True if the value is not <a href="../package-fidl_fidl/Some-class.md">Some</a> or <a href="../package-fidl_fidl/None-class.md">None</a>.  
_<span class="feature read-only">read-only</span><span class="feature inherited">inherited</span>_



##### [runtimeType](../package-fidl_fidl/OptionalNullable/runtimeType.md) &#8594; Type



A representation of the runtime type of the object.  
_<span class="feature read-only">read-only</span><span class="feature inherited">inherited</span>_





## Methods

##### [noSuchMethod](../package-fidl_fidl/OptionalNullable/noSuchMethod.md)(Invocation invocation) dynamic



Invoked when a non-existent method or property is accessed.  
_<span class="feature inherited">inherited</span>_



##### [or](../package-fidl_fidl/OptionalNullable/or.md)(T fallback) T



If the value is <a href="../package-fidl_fidl/Some-class.md">Some</a>, the value is returned. If <a href="../package-fidl_fidl/None-class.md">None</a>, <code>null</code> is
returned. Otherwise, the value <code>isUndefined</code>, in which case the given
<code>fallback</code> value is returned instead.  
_<span class="feature inherited">inherited</span>_



##### [toString](../package-fidl_fidl/OptionalNullable/toString.md)() String



A string representation of this object.  
_<span class="feature inherited">inherited</span>_





## Operators

##### [operator ==](../package-fidl_fidl/OptionalNullable/operator_equals.md)(Object other) bool



The equality operator.  
_<span class="feature inherited">inherited</span>_















