Swift面试题相关

面试题

①给一个数组,要求用swift写一个函数,交换数组中的两个元素。

复制代码
    //给一个数组,要求用swift写一个函数,交换数组中的两个元素。
    var nums = [1,2,3,4,5,6,7]
    //        func swap(_ nums: inout [Int], _ a : Int, _ b : Int) {
    //            let temp = nums[a]
    //            nums[a] = nums[b]
    //            nums[b] = temp
    //        }
    
    //2.泛型
    //        func swap<T>(_ nums: inout [T], _ a : Int, _ b : Int) {
    //            let temp = nums[a]
    //            nums[a] = nums[b]
    //            nums[b] = temp
    //        }
    //
    func swap<T>(_ nums: inout [T], _ a : Int, _ b : Int) {
        let count = nums.count
        //安全判断
        if a == b || a < 0 || a > count - 1 || b < 0 || b > count - 1   {
            return
        }
        (nums[a],nums[b]) = (nums[b],nums[a])
    }
复制代码

②循环引用

复制代码
//循环引用(属性前+weak修饰)
class Node {
    var value = 0
    weak var prev : Node?
    weak var next : Node?
    init(_ value : Int) {
        self.value = value
    }
    deinit {
        print("deinit")
    }
}

let a = Node(0)
 let b = Node(1)
        
a.prev = b
b.next = a
复制代码

使用 swift实现一个函数,输入是任一整数,输出要返回输入的整数+2

复制代码
简单:
func addTwo(input : Int) -> Int {
        return input + 2
    }
//什么是柯里化? //柯里化指的是从一个多参数函数变成一连串单参数函数的变换
    func add (input : Int) -> (Int) -> Int {
        return { value in
            return input + value
        }
    }
let addTwo = add(input: 2)
let oupPut = addTwo(8)
print(oupPut)

class BankCard {
        //余额
        var balance : Double = 0.0
        //存钱方法
        func deposit(amount: Double) {
            balance += amount
            print("deposit:\(balance)")
        }
        
    }

//柯里化?
let card = BankCard()
card.deposit(amount: 100)
        
let deposit = BankCard.deposit
deposit(card)(100)
复制代码

④ 简化代码

 

 

posted @ 2018-07-26 22:31  淡然微笑_Steven  阅读(256)  评论(0)    收藏  举报
编辑推荐:
· 于是转身独立开发者
· C#.Net筑基-泛型T & 协变逆变
· dotnet 代码调试方法
· DbContext是如何识别出实体集合的
· 一次 .NET 性能优化之旅:将 GC 压力降低 99%
阅读排行:
· 免费开源 .NET OpenCV 迷你运行时全平台发布
· 经验贴!万字总结网卡丢包及ping延迟等网络问题排查思路
· 10亿订单如何分库分表?
· 一个static关键字引发的线上故障:深度剖析静态变量与配置热更新的陷阱
· MinHook 如何对 .NET 母体 CoreCLR 进行拦截
点击右上角即可分享
微信分享提示