From b631aeb8f27bc329cd71718406caa88ac061dd52 Mon Sep 17 00:00:00 2001 From: Valentin Churavy Date: Tue, 23 Dec 2014 23:16:18 +0100 Subject: [PATCH] adds map for Nullable --- base/nullable.jl | 6 ++++++ test/nullable.jl | 8 ++++++++ 2 files changed, 14 insertions(+) diff --git a/base/nullable.jl b/base/nullable.jl index 830677588efb7..55be5b79cc85d 100644 --- a/base/nullable.jl +++ b/base/nullable.jl @@ -56,3 +56,9 @@ function hash(x::Nullable, h::UInt) return hash(x.value, h + nullablehash_seed) end end + +# Specialized map over Nullable +function map(f::Callable, x::Nullable) + isnull(x) && return Nullable{Union()}() + Nullable(f(get(x))) +end diff --git a/test/nullable.jl b/test/nullable.jl index dc4b1650b0626..33d6c1bda506c 100644 --- a/test/nullable.jl +++ b/test/nullable.jl @@ -243,3 +243,11 @@ for T in types @test !isnull(x1.v) @test get(x1.v, one(T)) === one(T) end + +# test map +@test map(x->x, Nullable{Union()}()) === Nullable{Union()}() + +for T in types + @test isequal(map(x->x, Nullable{T}()), Nullable{Union()}()) + @test map(x->x, Nullable(one(T))) === Nullable(one(T)) +end