美文网首页
Swift @dynamicCallable

Swift @dynamicCallable

作者: LonnieQ | 来源:发表于2020-10-04 01:51 被阅读0次

    例子

    @dynamicCallable
    struct DictionaryGenerator {
    
        func dynamicallyCall(withKeywordArguments args: KeyValuePairs<String, Any>) -> [String: Any] {
            var dic = [String : Any]()
            for item in args {
                dic[item.0] = item.1
            }
            return dic
        }
        
    }
    

    使用方法

    let generator = DictionaryGenerator()
    print(generator(name: "Tom", age: 24)) // ["name": "Tom", "age": 24]
    

    从上面的例子可以看出,通过@dynamicCallable, 用户可以用该类型的实例动态地传入参数,通过dynamicallyCall方法解析传入的参数来进行程序逻辑处理。这个机制使得Swift语言进一步具备了动态语言的功能。@dynamicCallable和@dynamicMemberLookup这两个特性结合在一起能够实现Python等脚本语言动态添加、修改属性及向函数传入不同参数的功能。

    相关文章

      网友评论

          本文标题:Swift @dynamicCallable

          本文链接:https://www.haomeiwen.com/subject/tlvluktx.html