def withFilter
[A
](p
: T
=> Boolean
) = if (isDefined
&& p
(value
)) { println("Box.withFilter")
Full(value)
def foreach
(act
: T
=> Unit
) = if (isDefined
) { println("Box.foreach")
act(value)
}
}
}
}
val full
= Full
("Surprise")
for (x
<- empty
) println
("Empty :[")
x <- full
y <- Full(x.reverse)
} println(y)
}
YWJzdHJhY3QgY2xhc3MgQm94WytUXSB7CiAgICBkZWYgd2l0aEZpbHRlcltBXShwOiBUID0+IEJvb2xlYW4pID0gaWYgKGlzRGVmaW5lZCAmJiBwKHZhbHVlKSkgewogICAgICAgIHByaW50bG4oIkJveC53aXRoRmlsdGVyIikKICAgICAgICBGdWxsKHZhbHVlKQogICAgfSBlbHNlIEVtcHR5CiAgICAKICAgIGRlZiBmb3JlYWNoKGFjdDogVCA9PiBVbml0KSA9IGlmIChpc0RlZmluZWQpIHsKICAgICAgICBwcmludGxuKCJCb3guZm9yZWFjaCIpCiAgICAgICAgYWN0KHZhbHVlKQogICAgfQogCiAgICB2YWwgaXNEZWZpbmVkOiBCb29sZWFuCiAgICBkZWYgdmFsdWU6IFQKfQpjYXNlIG9iamVjdCBFbXB0eSBleHRlbmRzIEJveFtOb3RoaW5nXSB7CiAgICBvdmVycmlkZSB2YWwgaXNEZWZpbmVkID0gZmFsc2UKICAgIG92ZXJyaWRlIGRlZiB2YWx1ZSA9IHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJFbXB0eSBib3giKQp9CmNhc2UgY2xhc3MgRnVsbFtUXShpdGVtOiBUKSBleHRlbmRzIEJveFtUXSB7CiAgICBvdmVycmlkZSB2YWwgaXNEZWZpbmVkID0gdHJ1ZQogICAgb3ZlcnJpZGUgdmFsIHZhbHVlID0gaXRlbQp9CiAKb2JqZWN0IE1haW4gZXh0ZW5kcyBBcHAgewogICAgdmFsIGVtcHR5ID0gRW1wdHkKICAgIHZhbCBmdWxsICA9IEZ1bGwoIlN1cnByaXNlIikKICAgIAogICAgZm9yICh4IDwtIGVtcHR5KSBwcmludGxuKCJFbXB0eSA6WyIpCiAgICAKICAgIGZvciB7CiAgICAgICAgeCA8LSBmdWxsCiAgICAgICAgaWYgeCBzdGFydHNXaXRoICJTdXIiCiAgICAgICAgeSA8LSBGdWxsKHgucmV2ZXJzZSkKICAgIH0gcHJpbnRsbih5KQp9