首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >任何类型的迅速和转换为国际贸易

任何类型的迅速和转换为国际贸易
EN

Stack Overflow用户
提问于 2014-12-15 02:19:05
回答 3查看 1.4K关注 0票数 0

我有一个占位符对象,基本上在我的应用程序的上下文中,这个函数从一个地方装载到另一个地方。我给它分配了类型Any,但结果是错误的

代码语言:javascript
复制
'Any' is not convertible to Int

我使用的是Any而不是AnyObject,因为它可以携带非对象,比如元组或闭包。在以下情况下有什么建议吗?

代码语言:javascript
复制
var n: Any = 4

n = n * 4
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-12-15 04:42:35

在强类型语言中,尽早使类型正确是很重要的。否则,您最终将与类型系统的斗争在每一个回合。

在您的例子中,占位符需要是Any,因为它包含任意的数据,但是n是一个Int,应该这样声明。

您的代码应该有这样的感觉:

代码语言:javascript
复制
func processPlaceholder (placeHolder: Any) {
  if let n = placeHolder as? Int {
    n = n * 4
    // ...
  }
  else if let s = placeHolder as? String {
    s = s + "Four"
    // ....
  }
  // ...
}
票数 1
EN

Stack Overflow用户

发布于 2014-12-15 02:22:28

如果你知道n是个Int,你就可以把它转换成这样。

代码语言:javascript
复制
var n: Any = 4
n = n as Int * 4

N的类型仍然是Any,所以如果您想要执行多个操作,那么每次都必须对其进行强制转换。

票数 0
EN

Stack Overflow用户

发布于 2014-12-15 04:47:42

其他的答案是完全正确的。我只是想澄清一下。

是的,是引擎盖下面的一家旅店。但对编译器来说却不是这样!你把这个东西输入为Any,这就是编译器所知道的。你不能用Any来做算术运算。

如果你坚持把这个东西存储在一个任何,那么你必须转换到一个Int,以便使用它,就像它是一个Int。现在编译器将允许您将其视为Int。只要它真的是个旅店,它也会起作用的。(如果你撒谎而不是Int,那么程序运行时就会崩溃。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27476485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档