草庐IT

Optional类

全部标签

ios - 在 Swift 中对元组进行模式匹配时如何解包 Optional?

在Swift中,有一个常见的iflet模式用于解包可选值:ifletvalue=optional{print("valueisnowunwrapped:\(value)")}我目前正在做这种模式匹配,但是在switchcase中使用元组,其中两个参数都是可选的://urlisoptionalhereswitch(year,url){case(1990...2015,letunwrappedUrl):print("Currentyearis\(year),goto:\(unwrappedUrl)")}然而,这打印:"Currentyearis2000,gotoOptional(www.g

swift - 为什么不能在没有警告的情况下将 Optional 分配给类型为 `Any` 的变量?

以下代码在没有警告的情况下编译:版本1:varanything:Anyanything="woof"有道理...Any是任何类型、值类型或引用类型。但是,如果我们创建一个像Double?这样的可选变量,这段代码会抛出一个警告:版本2:varanything:AnyletaDouble:Double?=3anything=aDouble但是这段代码不会抛出警告:版本3:enumAnEnum:{casefirstcasesecond(T)}varanEnum:AnEnum=.firstanything=anEnum您可以合理化版本2抛出警告,因为Any不是Optional类型,而Doubl

swift - 为什么 Swift nil-coalescing 返回一个 Optional?

首先,我尝试映射[String?],以获得[String]:$xcrunswiftWelcometoAppleSwiftversion2.2(swiftlang-703.0.18.8clang-703.0.30).Type:helpforassistance.1>importFoundation2>letj:[String?]=["a",nil]j:[String?]=2values{[0]="a"[1]=nil}3>j.map{$0??""}$R0:[String]=2values{[0]="a"[1]=""}这对我来说非常有意义。我对String?进行零合并,得到一个String。

iphone - 自定义单元格 : fatal error: unexpectedly found nil while unwrapping an Optional value

我有一个表格View,其中包含创建为.xib的自定义单元格。我没有使用Storyboard。我有一个问题,我无法用来自webservice结果的数据填充我的表。此外,我在自定义单元格中有4个标签。在我的自定义单元格类中,当我尝试为每个项目设置标签时,它会给我如上所示的fatalerror。这是我的代码:classViewController:UIViewController,UITableViewDataSource,UITableViewDelegate{...functableView(tableView:UITableView!,cellForRowAtIndexPathinde

swift - 如何知道 Optional Chaining 哪里坏了?

所以在iOSSwift中我们可以做可选链来简化nil检查,就像在officialdocumentation中一样。letjohnsAddress=Address()johnsAddress.buildingName="TheLarches"johnsAddress.street="LaurelStreet"john.residence!.address=johnsAddressifletjohnsStreet=john.residence?.address?.street{println("John'sstreetnameis\(johnsStreet).")}else{println

swift - NSURL 在展开一个 Optional 值时发现 nil

谁知道我为什么会这样fatalerror:在展开可选值时意外发现nil当我使用letURL=NSURL(string:"https://roads.googleapis.com/v1/snapToRoads?path=-35.27801,149.12958|-35.28032,149.12907")! 最佳答案 |字符不是有效的URL字符,因此您必须将其替换为百分号转义字符。编码整个字符串会自动为你完成varstringUrl="https://roads.googleapis.com/v1/snapToRoads?path=-35

java - do-while with Java8-Optional

我经常在我的一些项目中使用do-while-checkNextForNull-getNext循环模式(不知道是否有正式名称)。但是在Java8中,使用Optional被认为是比在客户端代码中检查空引用更干净的代码。但是当在这种循环模式中使用Optional时,代码变得有点冗长和丑陋,但是因为Optional有一些方便的方法,我希望一定存在比我在下面提出的方法更简洁的方法。例子:给定以下类(class)。classItem{intnr;Item(nr){this.nr=nr;//anexpensiveoperation}Itemnext(){return...someCondition.

java - 如何使用 java.util.Optional 生成 JaxB 类?

我使用jaxb2-maven-plugin从给定的XSD生成JaxB类。它工作正常。但是现在我想在生成的类中使用java.util.Optional。但是JaxB生成了没有Optionals的类。所以我不得不对每个变量进行空检查。有人知道如何配置jaxb2-maven-plugin以使用java.util.Optional吗?谢谢你的帮助! 最佳答案 也许您可以找到更通用的东西,但我不确定这是否可行。无论如何,您仍然可以为您希望成为可选的类型定义自定义适配器。这是一个整数的例子首先,创建一个Adapterpublicfinalcla

java - 何时使用 Optional.orElse() 而不是 Optional.orElseGet()

这个问题在这里已经有了答案:Differencebetween`Optional.orElse()`and`Optional.orElseGet()`(9个回答)关闭3年前。我已阅读此question的答案关于Optional.orElse()和Optional.orElseGet()的区别。似乎orElseGet()总是比orElse()更有效,因为惰性评估,即使在对非常简单的示例进行基准测试时也明显可见(参见第4部分):https://www.baeldung.com/java-optional-or-else-vs-or-else-get那么,是否存在使用orElse而不是orE

java - 使用 Java 8 Optional 实现安全的 Map 遍历

我有Map>myMap在我的Java8类(class)中。我需要导航到像myMap['keyA']['keyB']这样的叶字符串,返回null如果'keyA'或'keyB'在相关map中不存在。在groovy中我会使用myMap?.keyA?.keyB并完成它。我了解Java8的Optional将类似的行为带入java。有没有办法使用这种新行为来简洁地模仿groovy功能​​?如果不是,是否有另一种简洁的方法可以在Java8中实现这种行为,或者我是否仍然坚持使用复杂的过程代码? 最佳答案 StringvalueOrNull=Opti