


# 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</span><span class="feature">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</span><span class="feature">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</span><span class="feature">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</span><span class="feature">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</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</span>_



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



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





## Operators

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



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















