问题标签 [optional-chaining]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
10340 浏览

python - 如何链接可能在 Python 中返回 None 的属性查找?

我的问题是一个普遍的问题,如何在中间的一个可能返回时链接一系列属性查找None,但是由于我在尝试使用 Beautiful Soup 时遇到了这个问题,所以我将在这种情况下询问它。

Beautiful Soup 解析 HTML 文档并返回一个对象,该对象可用于访问该文档的结构化内容。例如,如果解析的文档在变量soup中,我可以通过以下方式获取其标题:

我的问题是,如果文档没有标题,则soup.head.title返回None并且后续string查找会引发异常。我可以将链条分解为:

但是,在我看来,这很冗长且难以阅读。

我可以写:

但这是冗长且低效的。

如果想到的一种解决方案(我认为这是可能的)是创建一个对象(调用它nil),它将返回None任何属性查找。这将允许我写:

但这很丑陋。有没有更好的办法?

0 投票
8 回答
8689 浏览

javascript - JavaScript 中的可选链

我最近用 Swift 编程了很多。今天,当我遇到问题时,我在 JavaScipt 中做了一些工作:

是否有类似于 JavaScript 中的可选链接的东西?一种undefined is not an object没有任何变量的预防方法?

例子:

将失败一半时间,因为有时会test返回未定义。

我能想到的唯一解决方案是一个函数:

我希望能够做类似的事情:

问号后面的部分只有在test返回一个对象时才会执行。

但这不是很优雅。有更好的吗?运算符的神奇组合?

编辑我知道我可以重写test以返回一些东西。但我想知道是否有类似可选链接的东西。我对上述示例的特定解决方案不感兴趣。如果无法控制返回未定义的函数,我也可以使用它。

0 投票
1 回答
153 浏览

ios - 返回 Int 的可选链接

这是我如何返回表视图的行数:

但是,我想使用可选链接使其更简洁......但是编译器对我的代码不满意。我试试这个:

它抱怨计数是 Int 类型的?我应该强制打开它,所以我这样做:

它抱怨 count 是 Int 类型。使用可选链接,如果数据不是 nil,它应该只获取计数,如果数组不是 nil,那么我知道计数将返回 ok。

我错过了什么?谢谢

0 投票
1 回答
123 浏览

swift - 从 Apple 的 Swift 编程编写一段代码时出现意外错误(可选链接)

我编写了以下与 Apple 的 Swift Programming Language 相同的代码,但出现意外错误: type'()' does not conform to protocol 'boolean type' ,其位置显示在以下代码中:

0 投票
3 回答
3718 浏览

swift - Swift 的可选链接总是使用 if let 构造完成,还是只是使用带可选的问号完成?

根据 Apple 文档,可选链接如下:

如果可选值非零,则通过在希望调用属性、方法或下标的可选值后放置问号 (?) 来指定可选链接。...当可选项为 nil 时,可选项链接优雅地失败...

我对此的解释是,如下结构是可选链接:

someMasterObject.possiblyNilHandler?.handleTheSituation()

...并且如果处理程序不为零,上述行将调用 handleTheSituation 方法,如果处理程序为零,则优雅地失败(跳过行)。

然而,我看到的几乎所有可选链接示例都使用“if let”构造,如下所示:

事实上,我在网上找到的文档和示例大量使用了与可选链接相关的“if let”结构,看起来好像是可选链接。

但是,我是否正确假设我的第一个示例是支持使用可选链接,并且 if let 构造是使用(或密切相关)可选链接的另一种构造?

0 投票
3 回答
1899 浏览

swift - 如何在快速搜索字典时使用可选链接?

我想使用 if let 安全地搜索快速字典中的值,并确保随着我对字典的深入了解它是类型安全的。该字典包含包含 NSArray 的字典,其中包含更多字典。

第一次尝试我的代码如下所示:

我如何将它缩短到一两行?

我意识到如果它是 2 层,我可以链接它。这有效:

但是任何比这更长的链都不会编译。

有没有办法不止一次地链接字典?

谢谢

0 投票
1 回答
1459 浏览

ios - 回调方法不在 Swift 中从 UIView 调用到 ViewController

我有两个类CustomSwipOut,它们是UIView的子类和UIViewController的ViewController子类。委托的回调方法没有在ViewController 类中从 CustomSwipeOut中定义的表视图的didSelectRowAtIndexPath委托方法中触发。我在 ViewController 类中完成了可选绑定var a = CustomSwipeOut(); a.delegate = ViewController()

//ViewController 类

0 投票
3 回答
3246 浏览

uitableview - Swift 赋值左侧使用的可选链接

在赋值语句的左侧使用可选链是什么意思?如果可选变量为零,应用程序会崩溃吗?

例如

0 投票
2 回答
417 浏览

ios - 如何在 Swift 中引用导航控制器?

我创建了一个UINavigationController对象并将其设置为窗口的rootViewController属性。对象的是一个名为 的rootViewController类。例如,如果我想从 to 导航,我可以使用:UINavigationControllerUINavigationMenuViewControllerUINavigationMenuViewControllerUIUserProfileViewController

效果似乎是一样的。我想知道有什么区别。我猜第二种方式更安全,如果我忘记将UINavigationMenuViewController对象嵌入到 中UINavigationController,与第一种情况相比,应用程序不会崩溃。我想它也被称为可选链接,我只是不太确定,因为我还在学习 Swift。

请给我一些建议。

0 投票
1 回答
238 浏览

swift - 构造函数调用的可选链接?

我想有选择地将 an 强制NSNumber?转换为 an Int?,但初始化方法Int只需要init(NSNumber),所以我不能通过NSNumber?.

有没有办法让我压缩这段代码,以便它使用可选链接之类的东西?