FloatableRaising
The FloatableRaising trait describes a type that can be converted to a Float64, but the conversion might raise an error (e.g.: a string).
This trait requires the type to implement the __float__() method, which
can raise an error.
For example:
from std.utils import Variant
@fieldwise_init
struct MaybeFloat(FloatableRaising):
var value: Variant[Float64, NoneType]
def __float__(self) raises -> Float64:
if self.value.isa[NoneType]():
raise "Float expected"
return self.value[Float64]
A MaybeFloat can now be converted to Float64:
from std.utils import Variant
@fieldwise_init
struct MaybeFloat(FloatableRaising):
var value: Variant[Float64, NoneType]
def __float__(self) raises -> Float64:
if self.value.isa[NoneType]():
raise "Float expected"
return self.value[Float64]
try:
print(Float64(MaybeFloat(4.6)))
except:
print("error occurred")
Implemented traits
Required methods
__float__
__float__(self: _Self) -> Float64
Get the float point representation of the value.
Returns:
Float64: The float point representation of the value.
Raises:
If the type does not have a float point representation.