2016-11-17 21 views
0
static func randomShape() -> Shape { 
    // Find out count of possible shapes 
    var maxValue = 0 
    while let _ = self.init(rawValue: ++maxValue) {} 
    // Generate random number from number of shapes 
    let randomNumber = Int(arc4random_uniform(UInt32(maxValue))) 
    // Create and return shape 
    let shape = self.init(rawValue: randomNumber)! 

    return shape 
} 

专注于while let _ = self.init(rawValue: ++maxValue) {}如何让我的增量或Swift 3友好?

我等这++已经从斯威夫特过时,但是我不知道我可以改变我的方法仍然起作用权的错误。

我试过的MaxValue + = 1,我得到的错误

'+=' produces '()', not the expected contextual result type 'Int' 

你的帮助深表感谢!

回答

6
++value 

基本上先递增值然后使用新值。

所以这...

someFunc(++value) 

是一样的做...

value += 1 
someFunc(value) 
3

@克里斯Karani你可以使用Xcode中解决这类问题。尝试在编辑器左侧使用Xcode的红色错误点。例如:

enter image description here

如果你点击“修复”,它会为您处理一切。你

enter image description here

也可以使用“编辑/转换/到当前斯威夫特语法”菜单为您的所有项目转换为斯威夫特3语法。确保您从“选择要转换的目标”屏幕中选择主要目标。

你的答案是:

maxValue += 1 
+0

是否当++是一个函数的参数内使用这项工作?它将不得不将增量拉到前一行。酷,如果它:-) – Fogmeister

+0

好吧,我只是测试了这一点。当它自己在一行(如你的例子)时,Xcode会自动修复它。但是当它在函数调用中使用时(如OP),Xcode只会将其标记为错误,并且不提供自动修复。 – Fogmeister