一个
Any
配件。
Any
配件?听起来不错。那么它是什么呢?
您可能至少遇到过一次将[Any]
、[AnyHashable: Any]
或任何东西上转换为Any
的情况。如果是这样,您会编写如下:
func tion(_ anAny: Any) -> Int {
var anArray: [Int]?
var aDictionary: [String: Any]?
var result = 0
if anAny is [Int] {
anArray = anAny as! [Int]
}
else if anAny is [String: Int] {
aDictionary = anAny as! [String: Int]
}
if let anArray = anArray {
result = ((anArray[3] as? [Int])?[9] as? [Int])?[27]? ?? 0
}
else if let aDictionary = aDictionary {
result = (aDictionary["3"] as? [String: [String: Int]])?["9"]?["27"] ?? 0
}
return result
}
不,请下不为例!
import PackageDescription
let package = Package(
name: "AWESOME_APP",
dependencies: [
.Package(url: "https://github.com/minacle/AAA.git", majorVersion: 1),
]
)
github "minacle/AAA" ~> 1.0
target 'AWESOME_APP' do
use_frameworks!
pod 'AAA', '~> 1.0'
end
……现在,我们有AAA
。让我们试试!
import AAA
func tion(_ anAny: Any) -> Int {
let a = AAA(anAny)
return (a[3][9][27][] ?? a["3"]["9"]["27"][]) as? Int ?? 0
}
等等,这是什么?这些真的是相同的代码吗?多么美丽!
非常简单。
AAA
包装。[]
以获取该内容的副本!nil
的AAA
。[]
返回nil
。