斯威夫特:垂头丧气到已知类型

时间:2015-07-14 07:28:57

标签: swift optional

我只是想知道......

let movie = item as? Movie

在此示例中,item的类型为Movie或其他类型。如果后者movie将被赋予零值。因此movie的类型为Movie?

现在看看下一个例子:

let movie: Movie?

movie = item as? Movie

假设movie是一个类变量,我在其中一个类方法中指定了一些值。

对我而言,as? Movie感觉有些多余,因为已知movie类型为Movie?

Swift中是否有任何语法说:“将此对象向下转换为与我分配给它的对象相同的类型。如果这是一个可选类型并且向下转换失败,则分配nil。 “吗

我希望有类似的东西:

movie = item as?

movie =? movie

2 个答案:

答案 0 :(得分:2)

现有答案正确地说明没有内置功能。但是,仅仅基于已经在此处编写的内容,可以定义一个中缀运算符long long CountZeroSubstrings(vector<int> A) { int n = A.size(); vector<long long> S(n+1, 0); for (int i = 0; i < n; i++) S[i+1] = S[i] + A[i]; long long answer = 0; unordered_map<long long, int> H; for (int i = 0; i <= n; i++) { if (H.count(S[i])) answer += H[S[i]]; H[S[i]]++; } return answer; } ,它实现了您在问题中描述的行为。例如:

=?

答案 1 :(得分:1)