双数的类型是Swift中的Int

双数的类型是Swift中的Int,第1张

概述// Swiftimport UIKitlet arr = [1, "a", 2.88]let last = arr.lastif last is Int { print("The last is Int.") // The last is Int.} else { print("The last is not Int.")} 我无法理解打印的结果. 为什么打印“
// Swiftimport UIKitlet arr = [1,"a",2.88]let last = arr.lastif last is Int {    print("The last is Int.")    // The last is Int.} else {    print("The last is not Int.")}

我无法理解打印的结果.
为什么打印“最后是Int”.

// Swiftimport UIKitlet arr = [1,-2]let last = arr.lastif last is Double {    print("The last is Double.")    // The last is Double.} else {    print("The last is not Double.")}

这张照片“The last is Double”.为什么?
有人可以帮助我吗?
比你变化多了.

解决方法 Swift数组只能包含一种类型.当你宣布:

let arr = [1,2.88]

Swift制作了[NSObject]类型的arr.您可以通过按住Option键并单击arr来查看其类型来验证这一点.这只能起作用,因为您已导入Foundation(您的导入UIKit也会导入Foundation).尝试删除导入UIKit.

然后,将值1和2.88转换为NSNumber并将“a”转换为Nsstring,以便它们可以存储在[NSObject]数组中,因为Ints,Strings和Doubles不是NSObject. NSNumber和Nsstring是NSObject的子类. Swift为数组选择了最严格的类型.如果您的数组为[1,true,2.88],则数组类型为[NSNumber].

关于NSNumber的有趣之处在于它是一个包装许多不同类型的对象容器.你可以放入一个Int并取出一个Double.所以,当你用is测试它时会产生误导.它回应“真实”的含义,“如果你愿意,我可以做到”.

import Foundationlet n: NSNumber = 3.14print(n is Int)       // "true"print(n is Double)    // "true"print(n is Bool)      // "true"print(n as! Int)      // "3"print(n as! Double)   // "3.14"print(n as! Bool)     // "true"

注意:如果你宣布你的arr是[Any],那么这将按预期工作:

let arr:[Any] = [1,2.88]let last = arr.lastif last is Int {    print("The last is Int.")} else {    print("The last is not Int.")  // "The last is not Int."}

但除非你明确要求,否则Swift不会为你创建一个Any类型的数组(因为坦率地说它是强类型语言中的憎恶).如果你发现自己使用[Any],你应该重新考虑你的设计.

导入Foundation时Swift创建[NSObject]的唯一原因是在调用Cocoa和Cocoa touch API时让我们的生活变得更轻松.如果这样的API需要传递NSArray,则可以发送[1,“a”,2.88]而不是[NSNumber(整数:1),Nsstring(字符串:“a”),NSNumber(double:2.88)].

总结

以上是内存溢出为你收集整理的双数的类型是Swift中的Int全部内容,希望文章能够帮你解决双数的类型是Swift中的Int所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1010452.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存