标签: optional

在 Java 8 中使用 Optional 进行多次空检查

我想使用 Java 8 使用多个ifelse语句来简化下面的代码。有没有办法使用一些 Java 8 功能来完全摆脱它们,例如Optional?我试图在这里找到一些东西,但找不到答案。

LocalDateTime beDate = someDate;
LocalDateTime aeDate = someDate;
LocalDateTime eDate;

if (beDate == null && aeDate == null) {
    eDate = null;
}
else if (beDate != null && aeDate == null) {
    eDate = beDate;
}
else if (beDate == null && aeDate != null) {
    eDate =  aeDate;
}
else if (beDate != null && aeDate != null && 
        (beDate.isEqual(aeDate) || beDate.isBefore(aeDate))) {
    eDate = …
Run Code Online (Sandbox Code Playgroud)

java datetime if-statement optional java-8

2
推荐指数
2
解决办法
275
查看次数

如何在 Java 中使用 Optional?

我有一个服务,它从数据库中查询优惠券列表。此服务Optional向客户端返回。

return listOfCoupons.isEmpty() ? Optional.empty() : Optional.of(listOfCoupons.get(listOfCoupons.size() - 1));
Run Code Online (Sandbox Code Playgroud)

此代码的客户端Optional以以下方式使用命名的“优惠券”:

if (coupons.isPresent) {
   save (coupons.get());
} 
Run Code Online (Sandbox Code Playgroud)

这是正确的用法Optional吗?

java optional java-8

2
推荐指数
1
解决办法
76
查看次数

可选类型“UIColor?”的值 必须解包为“UIColor”类型的值

使用

self.backgroundColor = .init(named: "my-color")
Run Code Online (Sandbox Code Playgroud)

这里self是一个UIView,触发此错误:

可选类型“UIColor?”的值 必须
使用 '??'展开为类型为 'UIColor' Coalesce的值 当可选值包含“nil”时提供默认值 [Fix]
使用“!”强制解包 如果可选值包含“nil”,则中止执行[修复]

编译器知道该backgroundColor属性是 type UIColor?,所以它应该为初始化程序推断它,对吗?

此外,知道该属性是可选的,错误消息对我来说没有太大意义。

此外,两个自动修复都是“递归的”,这意味着它们不会修复错误,我可以一遍又一遍地应用它们。

注意:我知道我可以使用UIColor.init或简单地使用UIColor. 这只是一个简化的例子。

syntax-error optional swift

2
推荐指数
1
解决办法
607
查看次数

为什么没有 OptionalDouble orElseNull() 或更好的解决方案

我有一个计算平均成本的流,代码看起来像这样

private Double calculateAverageCost(List<Item> items) {
    return items.stream()
                .mapToDouble(item -> item.cost)
                .filter(cost -> cost > 0) // Ignore zero cost items
                .average()
                . // Something here to convert an OptionalDouble to value or null
}
Run Code Online (Sandbox Code Playgroud)

我需要返回值或null没有值的方法(例如,当所有成本为零时)。我的问题是不存在orElseNull的方法OptionalDouble做转换。我可以在另一个步骤中完成,例如

private Double calculateAverageCost(List<Item> items) {
    final OptionalDouble average = items.stream()
                .mapToDouble(item -> item.cost)
                .filter(cost -> cost > 0) // Ignore zero cost items
                .average();
    return average.isPresent() ? average.getAsDouble() : null;
}
Run Code Online (Sandbox Code Playgroud)

我意识到这是一个“原始”流,我的方法返回盒装,Double但看起来这可能会有所帮助,类似于 ( Optional.empty().orElseGet(null))。

我缺少原因或更好的解决方案吗?

java optional java-stream

2
推荐指数
1
解决办法
141
查看次数

正则表达式以任意顺序删除特定单词

我要替换(删除)特定的可选单词(AAA,BBB,CCC),这些单词在特定单词(ALWAYS_THERE)前后紧随其后

this is important AAA BBB ALWAYS_THERE CCC
this is important BBB AAA ALWAYS_THERE CCC
this is important AAA CCC ALWAYS_THERE BBB
this is important BBB ALWAYS_THERE CCC AAA
this is important BBB this also ALWAYS_THERE CCC AAA
Run Code Online (Sandbox Code Playgroud)

this is important
this is important
this is important
this is important
this is important BBB this also
Run Code Online (Sandbox Code Playgroud)

如何在perl(或UNIX上的任何其他可用程序)中完成此操作?

regex perl words substitution optional

1
推荐指数
1
解决办法
4143
查看次数

nil文字与变量的可选绑定,在Swift中为nil

在Swift,为什么呢

var x: Int? = nil
if let y: Int? = x { ... }
Run Code Online (Sandbox Code Playgroud)

表现不同于

if let y: Int? = nil { ... }
Run Code Online (Sandbox Code Playgroud)

第一个案例成功的原因的理解表明第二个案例也应该如此,所以我不能真正理解.

后者不会因为无效的分配而失败,也不会因为可选的链接而失败; 否则它看起来和前者一样.为什么后者失败了,它与前者有何不同.究竟是什么时候,以及出于什么原因,第二个可选绑定被放弃了?

syntax variable-assignment optional conditional-statements swift

1
推荐指数
1
解决办法
1133
查看次数

我应该选择期权还是隐式解包期权

假设您需要编写将闭包作为参数之一的函数来将其称为回调.该函数的用户应该能够传递nil而不是关闭.在这种情况下,您会使用期权还是隐式解包期权?

提前致谢.

optional ios swift

1
推荐指数
1
解决办法
72
查看次数

为什么多个展开选项不可能?

我一直在玩swift的可选项.我经常使用条件展开模式:

var myOptional: AnyObject?
if let unwrapped = myOptional {
// do stuff
}
Run Code Online (Sandbox Code Playgroud)

但是,有时候我有两个可选值,如果两个都是非零的话我只想使用它们.因此,我尝试使用以下语法:

var myOptional: AnyObject?
var myOtherOptional: AnyObject?
if let unwrapped = myOptional && let otherUnwrapped = myOtherOptional? {
// do stuff
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试将这两个部分放在括号等中,但似乎没有办法做到这一点.有没有理由说我不应该这样做?显然我可以在另一个语句中嵌入一个语句,但我更愿意将它全部放在一行上.

if-statement optional swift

1
推荐指数
2
解决办法
217
查看次数

在swift中,为什么UIlabel是可选的?

看着这个,

    @IBOutlet weak var label1 : UILabel!
Run Code Online (Sandbox Code Playgroud)

为什么UILabel是可选的?我建立了与UILabel的IBOutlet连接的事实意味着UILabel DEFINATELY存在,并且不会是零.那为什么它是可选的UIlabel?而不是UILabel

uibutton optional uilabel ios swift

1
推荐指数
1
解决办法
568
查看次数

Swift中可选的成本

我想知道是否存在与Swift中的选项相关的任何性能成本,例如,如果我们必须重复使用选项.考虑以下两个代码片段
第一种方法

    var f: Foo?
    // foo returns an optional
    if let anotherF = foo() {
        f = anotherF
    }
    else {
        f = Foo()
    }
    f?.doSomething()
    f?.doSomethingElse()
    f?.doAnotherThing()
    // and so on
Run Code Online (Sandbox Code Playgroud)

第二种方法

    var f = Foo()
    if let anotherF = foo() {
        f = anotherF
    }
    f.doSomething()
    f.doAnotherThing()
    f.doAnotherThing()
    // and so on
Run Code Online (Sandbox Code Playgroud)

与第一种方法相比,第二种方法是否有任何性能优势

performance optional swift

1
推荐指数
1
解决办法
313
查看次数