swift - 我的打字习惯应该如何 swift 改变?

标签 swift

<分区>

我正在快速开始转换我的一些旧 Obj-C 库。老实说,这有点痛苦,我想知道我的习惯是不是不好,因为我读过的所有文章都在谈论快速学习是多么容易。具体来说:

  • 没有隐式类型转换会使代码困惑,并使诸如乘以 for 循环计数器之类的事情变得不那么方便。有没有更好的方法来处理这个问题?
  • 数组的使用也有点冗长。有没有更短的方法来使用数组作为参数,或者像下面这样声明一个空数组?
  • 与 Obj-C 允许的类似结构的句子相比,一般来说,命名函数似乎更难。大多数开发人员是否需要为具有多个参数的函数的第一个参数指定外部参数名称?

    func colorsAlongArray(colorArr:Array<UIColor>, steps:Int) -> Array<UIColor>
    {
        let arrCount = colorArr.count
        let stepIncrement = Double(arrCount)/Double(steps)
        var returnArr : Array<UIColor> = []
    
        for i in 0..<steps
        {
            let stepVal = stepIncrement*Double(i)
            let stepFactor = CGFloat(fmod(stepVal, 1.0))
            let stepIndex1 = Int(floor(stepVal/1.0))
            var stepIndex2 = Int(ceil(stepVal/1.0))
    
            if(stepIndex2 > arrCount-1)
                {stepIndex2 = arrCount-1}
            let color1 = colorArr[stepIndex1]
            let color2 = colorArr[stepIndex2]
    
            let color = colorByInterpolatingColors(color1, color2: color2, factor: stepFactor)
            returnArr += [color]
        }
    
        return returnArr
    }
    

最佳答案

关于您提出的三个问题。

  • 没有隐式类型转换是一种语言约定,旨在确保代码安全。这是设计使然,有点冗长。您可以在 Numeric Type Conversion 中阅读相关信息节The Basics章节 The Swift Programming Language .默认情况下,您也不会在算术运算中翻转。

  • Swift 是强类型的,所以如果您没有初始值可以放入数组中,那么 Type Inference系统可以自动确定类型(如 var returnArr = [UIColor.blackColor()]),您必须以某种方式指定类型。但是,您可以使用类型推断和 Array Type Shorthand Syntax稍微缩短数组声明 (var returnArr = [UIColor]())。

  • Swift 的命名准则与 Objective-C 的命名准则不同。事实上,它们更简短。我建议你检查一下:https://swift.org/documentation/api-design-guidelines/

关于swift - 我的打字习惯应该如何 swift 改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37603578/

相关文章:

ios - 在 GameScene.sks 中制作 Sprite 并在代码中访问它

ios - 如何使用 ARkit 在增强现实应用程序中关闭/打开 AR?

ios - 具有多个参数的函数的选择器

css - 我们如何在 ios 9 的 uiwebview 中禁用放大镜 - Swift

c - 快速访问 C 结构

ios - 通过 Kingfisher 在 UIImage 上加载 gif

ios - Swift - 一个屏幕到另一个屏幕

ios - Swift 3 - 对象类型 'RealmSwiftObject' 不受 Realm 异常管理

ios - 类型 'UIPageViewController.OptionsKey'(又名 'NSString')没有成员 'interPageSpacing'

ios - UIView 重写 func TouchBegan 默认 stub 抛出错误